在许多项目中,我不得不做出一个表包含用户和执行标准的基于用户的功能,例如认证,节能等,所以我决定把包含这些功能的一个类库,例如:实体框架可扩展的框架
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;}
}
在这种情况下,我还需要重写MyDbContext
的DbSet<User>
。如果我删除库中的DbSet<User>
,我的UserService
类将不再起作用。任何想法如何使一个可扩展的框架?
谢谢,这工作正常! – Marthijn 2012-02-27 14:03:57