Во многих проектах мне необходимо составить таблицу, содержащую пользователей, и реализовать стандартные пользовательские функции, такие как аутентификация, сохранение и т. Д. Поэтому я решил создать библиотеку классов, содержащую эти функции, например:Расширяемая структура Entity Framework
public class User
{
public int? Id {get;set;}
public string UserName {get;set;}
public string Password {get;set;}
}
public class MyDbContext : DbContext
{
public DbSet<User> {get;set;}
}
public class UserService
{
public MyDbContext Context {get;set;} // will be initialized in constructor
public User GetByUserName(string username)
{
return (from s in Context.Users where s.UserName.Equals(username) select s).SingleOrDefault();
}
// etc...
}
Теперь, когда я запускаю новый проект Mvc, я добавляю эту библиотеку и расширяет DbContext с помощью настраиваемых моделей. Проблема заключается в том, я не знаю, как расширить пользовательскую таблицу с некоторыми дополнительными полями, например:
public class MyUser : User
{
public bool IsApproved {get;set;}
}
public class CustomDbContext : MyDbContext
{
public DbSet<SomeOtherModel> {get;set;}
// problem: override DbSet in MyDbContext with class MyUser?
//public DbSet<MyUser> {get;set;}
}
В этом случае я также необходимо переопределить DbSet<User>
в MyDbContext
. Если я удалю DbSet<User>
в библиотеке, мой класс UserService
больше не будет работать. Любые идеи, как сделать расширяемую структуру?
Спасибо, это работает отлично! – Marthijn