sql >> Database >  >> RDS >> Sqlserver

Entity Framework Core 2.0:de abstracte basisklasse eenmalig configureren

Als ik het goed begrijp, is de Status is slechts een basisklasse en geen basis entiteit deelnemen aan Database Overerving.

In dat geval is het belangrijk om nooit te verwijzen naar Status klasse rechtstreeks in het entiteitsmodel en de configuratie, d.w.z. geen DbSet<Status> , geen navigatie-eigenschappen van het type Status of ICollection<Status> , nee modelBuilder.Entity<Status>() oproepen en geen IEntityTypeConfiguration<Status> .

In plaats daarvan moet u altijd verwijzen naar de concrete typen die overerven van de Status . Om configuratiecode opnieuw te gebruiken, moet u beperkte generieke . gebruiken methoden of klassen en geef de concrete entiteitstypen door.

Aangezien u IEntityTypeConfiguration . gebruikt klassen, is waarschijnlijk de meest natuurlijke manier om uw StatusConfiguration klasse generiek:

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

en laat er afgeleide entiteitsconfiguratieklassen van afleiden:

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. Hoe krijg ik alleen numerieke kolomwaarden?

  2. ID's van meerdere rijen invoegen in psycopg2

  3. Database + Windows-authenticatie + gebruikersnaam/wachtwoord?

  4. SQL Azure:Database XXXYYY op server is momenteel niet beschikbaar