我试图使用foreign key association方法实现EF中的一对一关联。在我的情况下,用户和团队之间存在关联,并且我需要每个人都有导航属性。 尝试保存数据时遇到了问题。实体框架将数据保存为一对一关联
这是什么型号的样子:添加像数据时
modelBuilder.Entity<User>()
.HasRequired(u => u.Team)
.WithMany()
.HasForeignKey(u => u.TeamID);
modelBuilder.Entity<Team>()
.HasRequired(t => t.Owner)
.WithMany()
.HasForeignKey(t => t.OwnerID)
.WillCascadeOnDelete(false);
现在:
public class Team
{
public int ID { get; set; }
public string Name { get; set; }
public int OwnerID { get; set; }
public virtual User Owner { get; set; }
}
public class User
{
public int ID { get; set; }
public string UserName { get; set; }
public int TeamID { get; set; }
public virtual Team Team { get; set; }
}
我说这些位到DbContext
OnModelCreating()
,如上面提到的博客文章指示这个:
User u = new User();
u.UserName = "farinha";
Team t = new Team("Flour Power");
u.Team = t;
t.Owner = u;
context.Users.Add(u);
context.Teams.Add(t);
context.SaveChanges();
甚至像这样:
User u = new User();
u.UserName = "farinha";
u.Team = new Team("Flour Power");
context.Users.Add(u);
context.SaveChanges();
,我发现了以下错误:
Unable to determine a valid ordering for dependent operations. Dependencies may exist due to foreign key constraints, model requirements, or store-generated values.
如何解决这个任何想法?我是否以错误的方式保存数据?
在此先感谢
@ ladislav-mrnka这会导致错误更改为'不能将值NULL插入列'TeamID',表'DeuceHigh.dbo.User';列不允许有空值。 INSERT失败。声明已被终止。“# – Farinha 2011-05-10 23:27:45
@Farinha由于您的模型已更改,您的数据库表是否已更新? – DDiVita 2011-05-11 01:13:26
@Farinha:这是数据库级错误,这意味着用户表中的TeamID仍然不可空。您没有重新创建或修改数据库。 – 2011-05-11 07:04:11