我試圖使用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