Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Entity Framework Core 2.0:Cách định cấu hình lớp cơ sở trừu tượng một lần

Nếu tôi hiểu đúng, thì Status chỉ là một lớp cơ sở và không phải là một thực thể cơ sở tham gia Kế thừa cơ sở dữ liệu.

Trong trường hợp như vậy, điều quan trọng là không bao giờ tham khảo Status lớp trực tiếp bên trong cấu hình và mô hình thực thể, tức là không có DbSet<Status> , không có thuộc tính điều hướng của loại Status hoặc ICollection<Status> , không có modelBuilder.Entity<Status>() cuộc gọi và không có IEntityTypeConfiguration<Status> .

Thay vào đó, bạn luôn phải tham khảo các kiểu cụ thể kế thừa từ Status . Để sử dụng lại mã cấu hình, bạn nên sử dụng chung chung bị ràng buộc các phương thức hoặc lớp và chuyển các kiểu thực thể cụ thể.

Vì bạn đang sử dụng IEntityTypeConfiguration , có lẽ tự nhiên nhất là tạo StatusConfiguration của bạn chung lớp:

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

và cho phép các lớp cấu hình thực thể dẫn xuất từ ​​nó:

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. Xóa SCHEMABINDING khỏi dạng xem trong SQL Server

  2. Lọc theo Tùy chọn OFFSET-FETCH trong Truy vấn chọn - Hướng dẫn SQL Server / TSQL Phần 118

  3. Trình tự so với danh tính

  4. Khắc phục “Lỗi tràn số học chuyển đổi int thành kiểu dữ liệu số” trong SQL Server

  5. SQL Server Internals:Các toán tử có vấn đề Pt. Tôi - Quét