Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Entity Framework Core 2,0:jak raz skonfigurować abstrakcyjną klasę bazową

Jeśli dobrze rozumiem, Status to tylko klasa bazowa, a nie podstawowa jednostka udział w dziedziczeniu baz danych.

W takim przypadku ważne jest, aby nigdy nie odnosić się do Status klasa bezpośrednio w modelu encji i konfiguracji, tj. bez DbSet<Status> , brak właściwości nawigacji typu Status lub ICollection<Status> , nie modelBuilder.Entity<Status>() wywołania i brak IEntityTypeConfiguration<Status> .

Zamiast tego zawsze musisz odwoływać się do konkretnych typów dziedziczących po Status . Aby ponownie użyć kodu konfiguracyjnego, powinieneś użyć ograniczonego ogólnego metody lub klasy i przekazać konkretne typy jednostek.

Ponieważ używasz IEntityTypeConfiguration klas, prawdopodobnie najbardziej naturalnym jest utworzenie StatusConfiguration klasa ogólna:

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

i niech pochodne klasy konfiguracji encji będą z niego wywodzić:

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. Zapytanie bardzo wolne w kodzie, ale szybkie w SSMS

  2. Monitorowanie liczników wydajności za pomocą PERFMON | Rozwiązywanie problemów z wydajnością programu SQL Server -3

  3. 4 sposoby liczenia wierszy w tabeli SQL Server z zaletami i wadami

  4. Błąd serwera SQL — HRESULT E_FAIL został zwrócony z wywołania komponentu COM

  5. Używanie sp_help_schedule w SQL Server