【发布时间】:2015-03-11 16:36:43
【问题描述】:
是否可以通过表单更新数据而不将表单绑定到原始表?
我们需要用户更新 SQL 视图映射到的主表中的一小部分数据,下面是用于更新数据的代码示例:
[HttpPost]
public ActionResult Address(AddressView model)
{
if (ModelState.IsValid)
{
TestEntities.AddressView .AddObject(model);
TestEntities.SaveChanges();
return Redirect("/Customer?id=" + model.id);
}
return View(model);
}
很遗憾,因为视图不能包含主键,所以在尝试更新数据时出现以下错误:
无法更新 EntitySet 'AddressView',因为它有一个 DefiningQuery 并且元素中不存在支持当前操作的元素。
在不使用典型的 SQL 更新语句的情况下是否有可能的解决方法,如果可能的话,我想坚持使用实体框架。
【问题讨论】:
-
看来你做不到,至少很容易做到。为什么不更新底层数据表?
-
视图中有 3 个表,主表有 200 多列,在这一特定任务中只有少数字段需要更新。
-
作为一种解决方法,您可以创建一个存储过程来更新这些字段。并从 EF 调用它。
标签: c# entity-framework asp.net-mvc-4 sql-view updatable-views