【发布时间】:2011-08-22 21:15:34
【问题描述】:
我正在尝试使用foreign key association 方法在EF 中实现一对一关联。在我的例子中,用户和团队之间存在关联,我需要在每个用户中都有一个导航属性。 我在尝试保存数据时遇到了问题。
这就是模型的样子:
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; }
}
我将这些位添加到DbContextOnModelCreating(),按照上面引用的博客文章中的说明:
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);
现在添加这样的数据时:
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();
我收到以下错误:
无法确定有效的订单 用于相关操作。依赖项 可能由于外键而存在 约束、模型要求或 存储生成的值。
知道如何解决这个问题吗?我是否以错误的方式保存数据?
提前致谢
【问题讨论】:
标签: entity-framework entity-framework-4.1 foreign-key-relationship one-to-one