我刚刚开始使用Entity Framework 6.1.2。我正在使用代码优先迁移。我在数据库中大约有78个实体。我的问题是,有什么方法可以使DbSet属性在DatabaseContext类中通用,因此我不必定义所有78个属性? 例如
public class DatabseDbContext : DbContext
{
public DbSet<Users> Users { get; set; }
public DbSet<Roles> Roles { get; set; }
public DbSet<Models> Models { get; set; }
public DbSet<Rights> Rights { get; set; }
}
我不想做所有这些属性。相反,我希望一个通用属性或函数返回相应类型的DbSet。 预先感谢!
答案 0 :(得分:1)
可以。但是你真的不应该。
您可以在OnModelCreating
中注册实体类型,而无需使用DbSet<T>
。 EG:
class Db : DbContext
{
public Db(string constr) : base(constr) { }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
var entityTypes = Assembly.GetExecutingAssembly()
.GetTypes()
.Where(t => t.Namespace == "MyApp.Entities");
foreach (var entityType in entityTypes)
{
modelBuilder.RegisterEntityType(entityType);
}
base.OnModelCreating(modelBuilder);
}
}
但是您始终必须通过DbContext.Set访问实体。