Entity Framework 代码首先添加 DbSet 属性
Entity Framework code first adding DbSet property
我刚开始使用 Entity Framework 6.1.2。我正在使用代码优先迁移。我在数据库中有大约 78 个实体。我的问题是,有什么方法可以使 DatabaseContext class 中的 DbSet 属性 通用,这样我就不必定义所有 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; }
}
我不想制作所有这些属性。相反,我想要一个通用 属性 或 return 相应类型的 DbSet 的函数。
提前致谢!
是的,你可以。但你真的不应该。
您可以在 OnModelCreating
中注册实体类型而无需 DbSet<T>
。例如:
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 访问实体。
我刚开始使用 Entity Framework 6.1.2。我正在使用代码优先迁移。我在数据库中有大约 78 个实体。我的问题是,有什么方法可以使 DatabaseContext class 中的 DbSet 属性 通用,这样我就不必定义所有 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; }
}
我不想制作所有这些属性。相反,我想要一个通用 属性 或 return 相应类型的 DbSet 的函数。 提前致谢!
是的,你可以。但你真的不应该。
您可以在 OnModelCreating
中注册实体类型而无需 DbSet<T>
。例如:
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 访问实体。