2011-05-09 38 views
0

我有2個表: 1)家長 2)兒童Codefirst外鍵名稱有重複的表名 - 如何明確設置?

在codefirst我有如下定義:

public class Parent 
{ 
    public int ParentId { get; set; } 
    public ICollection<Child> child { get; set; } 
} 

然而,在分貝,子表具有以下外鍵定義:

ParentParentId(FK,int,NULL)

如何確保它只是在外鍵中指定ParentId?我是否需要使用流暢配置顯式設置父鍵?

回答

1

是您必須包括在兒童實體外鍵屬性:

public class Child 
{ 
    public int ChildId { get; set; } 
    public int ParentId { get; set; } // FK 
    public virtual Parent { get; set; } 
} 

,或者必須柱用流利的API重命名:

modelBuilder.Entity<Child>() 
      .HasRequired(c => c.Parent) 
      .WithMany(p => p.Childs) 
      .Map(m => m.MapKey("ParentId")); 
+0

大,工作!我使用了第一種解決方案。 '虛擬'關鍵字的意義是什麼?我還注意到,在第二種解決方案不起作用的情況下,使用WithMany()方法不能使用Map()方法。我只有HasForeignKey,IsIdependent和WillCascadeOnDelete方法,沒有Map()! – jaffa 2011-05-09 13:49:27

+0

您未首先使用EF代碼的最新版本。這就是爲什麼你看不到'Map'而是你有'IsIndependent'的原因。 'virtual'的原因是啓用了'Parent'的延遲加載。 – 2011-05-09 14:13:04

+0

再次感謝您的信息。 – jaffa 2011-05-09 14:47:05