EF代码首先4.1一对多双向设置

Tho*_*mas 2 ef-code-first entity-framework-4.1

我有以下代码:

modelBuilder.Entity<User>().HasMany(x => x.Items).WithRequired();
Run Code Online (Sandbox Code Playgroud)

模型看起来像

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; }
}
Run Code Online (Sandbox Code Playgroud)

当EF为我生成数据库时,我最终在Items表(User_Id和User_Id1)中有两个外键而不是一个.我如何配置这个,所以只为我创建了一个密钥?

出于测试目的,我从Item类中删除了User,在这种情况下,配置工作正常,只创建了一个键.

All*_*enG 6

不确定这是否只是你问题中的拼写错误,但我很确定你的modelBuilder声明应该是 modelBuilder.Entity<User>().HasMany(x => x.Items).WithRequired(i => i.User);

不确定这是不是你的问题,但我肯定会从那里开始.

您可能还想在Item类中添加Long 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;}
}
Run Code Online (Sandbox Code Playgroud)