Во многих проектах мне нужно создать таблицу, содержащую пользователей и реализующую стандартные пользовательские функции, такие как аутентификация, сохранение и т. Д. Поэтому я решил создать библиотеку классов, содержащую эти функции, например:
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 пользовательскими моделями.Проблема в том, что я не знаю, как расширить таблицу User некоторыми дополнительными полями, например:
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
больше не будет работать.Есть идеи как сделать расширяемый фреймворк?