2011-06-15 65 views
2

我有以下代碼:EF代碼第4.1一對多雙向設置

modelBuilder.Entity<User>().HasMany(x => x.Items).WithRequired(); 

這個模型看起來像

public class User 
{ 
    public long Id { get; set; } 
    public string Name { get; set; } 
    public virtual ICollection<Item> Items { get; set; } 
} 

public class Item  
{ 
    public long Id { get; set; } 
    public string Title { get; set; } 

    public virtual User User { get; set; } 
} 

當EF生成數據庫我,我出現了兩個Items表中的外鍵(User_Id和User_Id1)而不是一個。我如何配置這個,所以只爲我創建一個密鑰?

僅用於測試目的,我從Item類中刪除了用戶,在這種情況下,配置工作得很好,只創建了一個密鑰。

回答

6

不知道這只是在你的問題一個錯字,但我敢肯定,你的模型構建器中的說法應該是modelBuilder.Entity<User>().HasMany(x => x.Items).WithRequired(i => i.User);

不知道如果這是你的問題或沒有,但我肯定會從那裏開始。

你可能也想加入龍ID FK在你的項目類

public class Item 
{ 
    public long Id {get; set;} 
    public long UserId {get; set;} //links directly to UserId 

    public string Title {get; set;} 

    public virtual User User {get; set;} 
} 
+0

這是不是一個錯字,這是問題。謝謝! – Thomas 2011-06-15 21:57:37

+0

@Thomas - 那麼你可以投票答覆和/或接受它。 – AllenG 2011-06-15 22:05:12