2011-06-15 81 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