Поддержка Entity Framework Core для TypeConventionConfiguration - PullRequest
0 голосов
/ 26 сентября 2019

В приложении, которое я разрабатываю, каждая таблица имеет таблицу Log с точно такой же структурой для отслеживания истории.Теперь при разработке этой концепции в Entity Framework 6 я использовал следующий метод:

Разделение общих свойств в интерфейсе;

public interface ICar
{
    int Id { get; set; }
    string CarCode { get; set; }
    string CarName { get; set; }
}

Затем я создаю фактическую таблицу, используя приведенный выше интерфейс следующим образом;

public partial class Car : ICar, IEntity
{
    public int Id { get; set; }
    public string CarCode { get; set; }
    public string CarName { get; set; }

    #region IEntity fields

    public int Key { get; set; }

    #endregion
}

Таблица журнала;

public partial class LogCar : ICar, IEntity, ILogEntity
{
    public int CarPk { get; set; }
    public string CarCode { get; set; }
    public string CarName { get; set; }

    #region IEntity fields

    public int Key  { get; set; }

    #endregion

    #region ILogEntity fields

    public int LogKey { get; set; }

    #endregion
}

IEntity имеет поля, которые должны содержать все таблицы, а ILogEntity имеет поля, которые должны содержать только таблицы журнала.

А на DbContext;

public partial class MyContext : DbContext
{
    public MyContext()
        : base(ConnectionStringBuilder.Instance.Construct())
    {
    }

    public virtual DbSet<Car> Cars { get; set; }
    public virtual DbSet<LogCar> LogCars { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {           
        modelBuilder.Types<ICar>().Configure(c => c.Property(p => p.Id).IsRequired());
        modelBuilder.Types<ICar>().Configure(c => c.Property(p => p.CarCode).IsRequired().HasMaxLength(5));
        modelBuilder.Types<ICar>().Configure(c => c.Property(p => p.CarName).IsRequired().HasMaxLength(50));

        modelBuilder.Types<IEntity>().Configure(c => c.Property(p => p.Key).IsRequired());

        modelBuilder.Types<ILogEntity>().Configure(c => c.Property(p => p.LogKey).IsRequired());
    }
}

Теперь я пытаюсь перенести этот кусок кода на Entity Framework Core 2.2.6 (ага, 3).Я застрял в той части, где modelBuilder.Types<IEntity>().Configure недоступен в Core, а также не поддерживает интерфейсы.Как я могу кодировать сценарий выше в EF Core?

Примечание: таблица и таблица журнала должны быть полностью отделены от отдельных таблиц в БД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...