繁体   English   中英

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

[英]Entity Framework code first adding DbSet property

我刚刚开始使用 Entity Framework 6.1.2。 我正在使用代码优先迁移。 我在数据库中有大约 78 个实体。 我的问题是有什么方法可以使 DatabaseContext 类中的 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; }
    }

我不想制作所有这些属性。 相反,我想要一个通用属性或函数来返回相应类型的 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访问实体。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM