2012-08-04 129 views
0

首先使用EF代碼想要控制生成列的名稱WHEN REFERENCING SELF。試過[ForeignKey][Column]屬性。 [Column]不起作用,並且[ForeignKey]強制似乎導致問題的關係。我已經使用[ForeignKey]屬性來設置連接到此類的另一個類/表中的列的名稱。EF代碼優先 - 爲關係更改生成的列名稱

public class Episodes 
{ 
    public long ID {get; set;} 
    // ... other properties 

    public List<Episodes> Children { get; set; } 
} 

希望有一個表(ID,...,ParentID) - 獲得一個表(ID,...,Episode_ID

回答

1

如果沒有外鍵列作爲您的實體類中的屬性公開,您可以只使用Fluent API定義列名稱:

modelBuilder.Entity<Episodes>() 
    .HasMany(e => e.Children) 
    .WithOptional() 
    .Map(m => m.MapKey("ParentID")); 

我假設pa租金是可選的(ParentID是數據庫表中的可空列),因爲我猜,樹中應該有一些「根」,即一個沒有父母的情節,因此至少對於這個情節ParentID列必須是NULL

+0

答案看起來不錯 - 但是當我這樣做 - 獲取運行時錯誤,當EF創建數據庫「序列不包含任何元素」 – 2012-08-04 20:07:35

+0

@SimonThompson:你能顯示代碼和該代碼的行正好拋出此異常嗎? – Slauma 2012-08-04 20:52:55

+0

有一些本格林姆林斯的地方 - 它現在的工作。感謝你的回答 – 2012-08-04 21:24:03