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 模型时禁用了直接使用外键。
更新:Contact
和 Location
都与 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();
}
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 模型时禁用了直接使用外键。
更新:Contact
和 Location
都与 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();
}