Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Entity Framework Core 2.0:Cara mengonfigurasi kelas dasar abstrak sekali

Jika saya mengerti dengan benar, Status hanyalah kelas dasar dan bukan entitas dasar berpartisipasi dalam Warisan Database.

Dalam kasus seperti itu, penting untuk tidak pernah merujuk ke Status kelas langsung di dalam model dan konfigurasi entitas, mis. tidak ada DbSet<Status> , tidak ada properti navigasi dengan tipe Status atau ICollection<Status> , tidak ada modelBuilder.Entity<Status>() panggilan dan tidak ada IEntityTypeConfiguration<Status> .

Sebagai gantinya, Anda selalu harus merujuk ke tipe konkret yang diwarisi dari Status . Untuk menggunakan kembali kode konfigurasi, Anda harus menggunakan generik terbatas metode atau kelas dan lulus tipe entitas konkret.

Karena Anda menggunakan IEntityTypeConfiguration kelas, mungkin yang paling alami adalah membuat StatusConfiguration . Anda kelas generik:

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

dan biarkan kelas konfigurasi entitas turunan diturunkan darinya:

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. Tipe data untuk menyimpan alamat ip di SQL Server

  2. Perbedaan antara Subquery dan Subquery Berkorelasi

  3. Pengaruh petunjuk NOLOCK dalam pernyataan SELECT

  4. Tabel Pivot dan Kolom Gabungan

  5. Prioritas Tipe Data di SQL Server