Как справиться с большой функцией OnModelCreating в Entity Framework?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как справиться с большой функцией OnModelCreating в Entity Framework?

Сообщение Anonymous »

Мы хотим использовать собственное имя ограничения первичного ключа pk_users_id вместо созданного по умолчанию Entity Framework PK_Users. Для этого нет атрибута, и нам приходится использовать свободный API. У нас есть такой файл DbContext:

Код: Выделить всё

    public class AppDbContext: DbContext {
protected override void OnModelCreating(ModelBuilder modelBuilder) {
modelBuilder
.Entity()
.HasKey(user => user.Id)
.HasName("pk_users_is");

// here would be thousands of lines for other entities

base.OnModelCreating(modelBuilder);
}

public DbSet Users { get; set; }
}
Первое, что приходит на ум, — это создать статический метод для каждой сущности, а затем вызвать его для каждой сущности, например:

Код: Выделить всё

    public class UserEntity {
public int Id { get; set; }
public string Name { get; set; } = "";

public static void Configure(EntityTypeBuilder builder) {
builder
.HasKey(user => user.Id)
.HasName("pk_users_id");
}
}

Код: Выделить всё

    public class AppDbContext: DbContext {
protected override void OnModelCreating(ModelBuilder modelBuilder) {
UserEntity.Configure(modelBuilder.Entity());

// here call Configure for every entity, similarly as above

base.OnModelCreating(modelBuilder);
}

public DbSet Users { get; set; }
}
Однако использование подобных статических свойств является антишаблоном.
Каким может быть разумный способ сохранить каждую конфигурацию объекта в свободном API, этого нельзя достичь с помощью атрибутов рядом с сущностью, а не всего в OnModelCreating?

Подробнее здесь: https://stackoverflow.com/questions/786 ... -framework
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как справиться с большой функцией OnModelCreating в Entity Framework?
    Anonymous » » в форуме C#
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • ModelBuilder.Configurations.Add и modelBuilder.Entity в OnModelCreating
    Anonymous » » в форуме C#
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Автоматические поля CreatedAt и UpdatedAt OnModelCreating() в ef6
    Anonymous » » в форуме C#
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Почему не показывать EF Core 6, AppDbContext onModelCreating в modelbuilder.HasDefaultSchema("Имя схемы");
    Anonymous » » в форуме C#
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • OnModelCreating вызывается только один раз даже для новых контекстов.
    Anonymous » » в форуме C#
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»