2016-10-10 142 views
1

我有以下的機型,我想指定使用FluentApi,在表A中的PAIRE,B.Id和C.Id是唯一複合唯一索引

class A 
{ 
    public int Id { get; set; } 
    public B B { get; set; } 
    public C C { get; set; } 
} 
class B 
{ 
    public int Id { get; set; } 
} 
class C 
{ 
    public int Id { get; set; } 
} 
+0

如果B和C的組合是唯一的,你真的需要ID? – Win

回答

1

這是不可能的只是導航屬性。

您需要添加明確FK字段:

class A 
{ 
    public int Id { get; set; } 
    public int B_Id { get; set; } 
    public int C_Id { get; set; } 
    public B B { get; set; } 
    public C C { get; set; } 
} 

,並使用以下流利的API配置創建唯一索引:

modelBuilder.Entity<A>().HasRequired(e => e.B).WithMany().HasForeignKey(e => e.B_Id); 
modelBuilder.Entity<A>().HasRequired(e => e.C).WithMany().HasForeignKey(e => e.C_Id); 

modelBuilder.Entity<A>().Property(e => e.B_Id).HasColumnAnnotation("Index", 
    new IndexAnnotation(new IndexAttribute("IX_BC", 1) { IsUnique = true })); 
modelBuilder.Entity<A>().Property(e => e.C_Id).HasColumnAnnotation("Index", 
    new IndexAnnotation(new IndexAttribute("IX_BC", 2) { IsUnique = true }));