Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Entity Framework Core 2.0:Как да конфигурирате абстрактен базов клас веднъж

Ако разбирам правилно, Състояние е просто базов клас, а не основен обект участва в наследяване на база данни.

В такъв случай е важно никога да не се позовавате на Статус клас директно в модела и конфигурацията на обекта, т.е. без DbSet , няма свойства за навигация от тип Състояние или ICollection<Състояние> , без modelBuilder.Entity() повиквания и без IEntityTypeConfiguration .

Вместо това винаги трябва да се позовавате на конкретните типове, наследени от Status . За да използвате повторно конфигурационен код, трябва да използвате ограничен общ методи или класове и да предават конкретните типове обекти.

Тъй като използвате IEntityTypeConfiguration класове, вероятно най-естественото е да направите своя StatusConfiguration генеричен клас:

public class StatusConfiguration<TEntity> : IEntityTypeConfiguration<TEntity>
    where TEntity : Status
{
    public virtual void Configure(EntityTypeBuilder<TEntity> builder)
    {
        builder.Property(c => c.updateUserName).IsRequired().HasMaxLength(50);
    }
}

и нека извлечените класове за конфигурация на обекти произлизат от него:

public class ItemConfiguration : StatusConfiguration<Item>
{
    public override void Configure(EntityTypeBuilder<Item> builder)
    {
        base.Configure(builder); // <--
        builder.ToTable("Item", "dbo").HasKey(c => c.Id);
        builder.Property(c => c.Description).IsRequired().HasMaxLength(100);
    }
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Преобразуването на тип данни datetime2 в тип данни datetime води до стойност извън диапазона

  2. Връщане на множество таблици от съхранена процедура

  3. Справяне с грешки с висока сериозност в SQL Server

  4. Добавяне на намек за заявка при извикване на функция с таблична стойност

  5. T-SQL подзаявка Макс (дата) и присъединявания