【发布时间】:2016-08-15 10:30:04
【问题描述】:
我有一个 Model-First 实体模型,其中包含一个 Customer 表,该表链接到一个从单独的数据库中获取客户详细信息的视图。 Customer 表和 View 之间的关系是一对多的,并且我在 Customer 实体和 View 实体上都有一个导航属性。
当我尝试使用 context.Customers.DeleteObject(cust) 执行删除并调用 context.SaveChanges() 时出现错误:
无法更新 EntitySet 'ViewEntity',因为它有一个 DefiningQuery 并且不存在 [DeleteFunction] 元素来支持当前操作。
我尝试设置 On Delete Cascade 和 None 并且都产生相同的错误。
编辑:没有太多的代码可以展示,但是你去吧:
Customer selectedCust = (Customer)dgvCustomers.SelectedRows[0].DataBoundItem;
if (selectedCust != null)
{
if (MessageBox.Show(String.Format("Are you sure you want to delete Customer {0}?", selectedCust.CustomerID.ToString()),
"Customer Delete Confirmation", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
// TODO - Fix this
this.ReportSchedDBContext.Customers.DeleteObject(selectedCust);
this.ReportSchedDBContext.SaveChanges();
}
}
【问题讨论】:
-
向我们展示你的代码兄弟
-
你的实体和表有主键吗?
-
基于真实表(客户)的实体会,基于视图的实体不会,因为它基于视图。
-
你试过用 Remove 代替 DeleteObject 吗?除此之外,如果不查看所涉及的上下文部分的代码,就很难知道发生了什么。
-
是自追踪实体吗?您通常应该遵循这样的模式,从数据库中检索实体,标记为删除并保存。
标签: c# .net entity-framework entity-framework-4