Để ánh xạ khóa chính hỗn hợp sử dụng khung thực thể, chúng ta có thể sử dụng hai cách tiếp cận.
1) Bằng cách ghi đè phương thức OnModelCreating ()
Ví dụ: Tôi có lớp mô hình tên là VehicleFeature như hình dưới đây.
public class VehicleFeature
{
public int VehicleId { get; set; }
public int FeatureId{get;set;}
public Vehicle Vehicle{get;set;}
public Feature Feature{get;set;}
}
Mã trong DBContext của tôi sẽ giống như,
public class VegaDbContext : DbContext
{
public DbSet<Make> Makes{get;set;}
public DbSet<Feature> Features{get;set;}
public VegaDbContext(DbContextOptions<VegaDbContext> options):base(options)
{
}
// we override the OnModelCreating method here.
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<VehicleFeature>().HasKey(vf=> new {vf.VehicleId, vf.FeatureId});
}
}
2) Bằng Chú thích Dữ liệu.
public class VehicleFeature
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
public int VehicleId { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
public int FeatureId{get;set;}
public Vehicle Vehicle{get;set;}
public Feature Feature{get;set;}
}
Vui lòng tham khảo các liên kết dưới đây để biết thêm thông tin.
1) https://msdn.microsoft.com/en-us/library/jj591617(v=vs.113).aspx
2) Làm cách nào để thêm khóa duy nhất tổng hợp bằng EF 6 Fluent Api?
SomeId
mộtstring
hay mộtint
?