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

时间:2011-06-15 21:49:16

标签: entity-framework-4.1 ef-code-first

我有以下代码:

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类中删除了User,在这种情况下,配置工作正常,只创建了一个键。

1 个答案:

答案 0 :(得分: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;}
}