【发布时间】:2017-12-15 14:34:26
【问题描述】:
我有一个 Edit 控制器方法,它从 Edit 视图中获取 Tool。
Tool 模型包含一个名为Holder 的导航属性MobileUser,它还包含一个字符串HolderName,用于在视图中设置一个持有者。
在控制器方法中,我通过使用Tool.HolderName == MobileUser.Name 获取用户来设置MobileUser,但是在调用db.SaveChanges() 之后,MobileUser 导航属性在数据库中没有变化。
我的代码:
ToolsController.Edit(工具工具):
int id = db.MobileUsers.Single(x => x.Name == tool.HolderName).Id;
tool.Holder = db.MobileUsers.Find(id);
if (ModelState.IsValid)
{
db.Entry(tool).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(tool);
Tool类中的Holder导航属性:
public virtual MobileUser Holder { get; set; }
【问题讨论】:
-
您是否尝试过将条目和保存包含在 try catch 中并查看是否抛出异常?
-
您说您正在从表单中获取工具作为模型,但我认为它应该附加到上下文中
-
@MichaelStaples 我做了,没有抛出异常。
-
@Neir0 我尝试在保存前附加,但仍然没有骰子。
-
你能告诉我们你是如何配置它们之间的关系的吗?当您使用属性而不是外键时,这是一个常见问题,特别是在断开连接的情况下。您是否也在调用保存更改之前从数据库中获取工具?
标签: c# asp.net asp.net-mvc entity-framework navigation-properties