我有以下代码:
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,在这种情况下,配置工作正常,只创建了一个键。
答案 0 :(得分:6)
不确定这只是你问题中的拼写错误,但我很确定你的modelBuilder语句应该是modelBuilder.Entity<User>().HasMany(x => x.Items).WithRequired(i => i.User);
不确定这是不是你的问题,但我肯定会从那里开始。
您可能还想在Item类
中添加Long ID FKpublic 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;}
}