Entity Framework Core: общая конфигурация модели - PullRequest
0 голосов
/ 11 декабря 2018

При настройке сопоставлений моей модели в EF Core я хочу установить некоторые общие правила сопоставления, например.сообщить каждому классу, обладающему свойством Id, что это свойство отображается в столбец БД ID.

Используя Entity Framework, я смог добиться этого, используя следующий код:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Types<IEntity<long>>().Configure(c =>
    {
        c.Property(x => x.Id).HasColumnName("ID");
    });
}

(IEntity<long> - это простой интерфейс, имеющий только одно свойство long Id { get; set; }. Каждый класс сущностей в моемМодель просто реализует этот интерфейс.)

Возможно ли что-нибудь подобное и в Entity Framework Core 2.2 +?

1 Ответ

0 голосов
/ 12 декабря 2018

В итоге я получил следующее решение:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    foreach (IMutableEntityType mutableEntityType in modelBuilder.Model.GetEntityTypes())
    {
        bool isEntity = mutableEntityType.ClrType.GetInterface($"{nameof(IEntity<int>)}`1") != null;
        if (isEntity)
        {
            modelBuilder.Entity(mutableEntityType.ClrType).Property(nameof(IEntity<int>.Id)).HasColumnName("ID");
        }
    }
}
...