我正在使用.net 3.5的Entity Framework 1.
我做的事情很简单:
var RoomDetails = context.Rooms.ToList();
foreach (var Room in Rooms)
{
Room.LastUpdated = DateTime.Now;
}
Run Code Online (Sandbox Code Playgroud)
我尝试这样做时收到此错误:
context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
我收到错误:
无法更新EntitySet - 因为它具有DefiningQuery并且<ModificationFunctionMapping>元素中不存在<UpdateFunction>元素以支持当前操作.
我正在对上下文进行大量更新而没有任何问题,只有当我尝试更新此特定实体时才会这样做.
我所有的搜索都显示了同样的事情,即我正在尝试更新的实体上没有声明主键.但是,我确实有一个主键声明...
我可以在一个表中拥有多个主键吗?
我有一个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();
}
}
Run Code Online (Sandbox Code Playgroud)