Код Entity Framework сначала добавляет свойство DbSet - PullRequest
0 голосов
/ 07 января 2020

Я только начал работать с Entity Framework 6.1.2. Я использую код первой миграции. У меня есть около 78 объектов в базе данных. Мой вопрос заключается в том, что мы можем сделать свойство DbSet generi c в классе 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; }
    }

Я не хочу делать все эти свойства. Вместо этого я хочу, чтобы одно свойство или функция generi c возвращало DbSet соответствующего типа. Заранее спасибо!

1 Ответ

1 голос
/ 07 января 2020

Да, вы можете. Но ты действительно не должен.

Вы можете зарегистрировать типы объектов в 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 .

...