EF 不保存外部数据

EF doesn't saving foreign data

Table Contact 通过 Location ID 键与 table Location*→1 关系。 以下代码保存除 Location 之外的所有 Contact 数据。 我做错了什么? EF 6.0.0.0、MVC 5.2.3.0,但 EF 4.4 和 MVC 4 也会导致此错误。

using(MyEntities me = new MyEntities())
{
  Contact ct = me.Contact.SingleOrDefault(x=>x.User.UserID == WebSecurity.CurrentUserId);
  ct.Title = "sometitle"; //assignment and saving works
  ct.Location = me.Location.SingleOrDefault(x=>x.Location_ID == 19); //only assignment works
  me.SaveChanges();
}

由于某些错误,我在从数据库创建 EDMX 模型时禁用了直接使用外键。


更新:ContactLocation 都与 User 相关 UserID。这可能是问题的根源吗?

您必须指定位置级别必须包含在要在最后保存的上下文中。

所以只需像这样在您的代码中添加 .Include("Location")

using(MyEntities me = new MyEntities())
{
    Contact ct = me.Contact.Include("Location").SingleOrDefault(x=>x.User.UserID == WebSecurity.CurrentUserId);
    ct.Titile = "sometitle"; //assignment and saving works
    ct.Location = me.Location.SingleOrDefault(x=>x.Location_ID == 19); //only assignment works
    me.SaveChanges();
}