实体框架代码首先添加DbSet属性

我刚刚开始使用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。 预先感谢!

woxxx123 回答:实体框架代码首先添加DbSet属性

可以。但是你真的不应该。

您可以在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访问实体。

本文链接:https://www.f2er.com/2809012.html

大家都在问