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 访问实体。