Asp.net mvc 为什么我会得到一个“a”;无法更新EntitySet,因为它有一个DefiningQuery…“;尝试更新实体框架中的模型时发生异常?
使用实体框架在LINQ的帮助下更新到SQL时,会引发异常Asp.net mvc 为什么我会得到一个“a”;无法更新EntitySet,因为它有一个DefiningQuery…“;尝试更新实体框架中的模型时发生异常?,asp.net-mvc,entity-framework,linq-to-sql,exception,Asp.net Mvc,Entity Framework,Linq To Sql,Exception,使用实体框架在LINQ的帮助下更新到SQL时,会引发异常 System.Data.UpdateException: Unable to update the EntitySet 't_emp' because it has a DefiningQuery and no <UpdateFunction> element exists in the <ModificationFunctionMapping> 为什么会出现此错误?三件事: 不要捕捉无法处理的异常。你捕
System.Data.UpdateException: Unable to update the EntitySet 't_emp' because it has
a DefiningQuery and no <UpdateFunction> element exists in the
<ModificationFunctionMapping>
为什么会出现此错误?三件事:
元素以保护
阻止框架尝试对
不可更新的视图
如果视图是可更新的,只需删除
元素的内部视图的EntitySet定义中的元素
.edmx的StorageModel部分,以及正常的更新处理
将与任何其他表一样工作
如果视图不可更新,则必须提供更新
通过“修改函数映射”对自己进行逻辑分析
修改函数映射调用中定义的函数
.edmx的StorageModel部分。该函数可能包含
数据库中存储过程的名称和参数,或者
使用“定义命令”写入插入、更新或
直接在函数定义中删除语句
StorageModel
部分的.edmx
”(为清晰起见和防止堆栈溢出,请强调我的格式,后期格式化)
(来源:“Mike”on)问题在于表格结构为了避免错误,我们必须在表中创建一个主键。之后,更新edmx。该问题将得到解决,但如果使用MVC Asp.net,则可以在模型中设置主键
只需打开表中的model.edmx,转到字段属性并设置
Entity Key=True
谢谢您的帮助。问题在于表格结构。定义主键后,将不会出现任何异常。确认后,需要在表上设置PK(复合PK即可)。删除DefiningQuery会让事情变得更糟。为此,有人删除了表上的PK!
public void Updateall()
{
try
{
var tb = (from p in _te.t_emp
where p.id == "1"
select p).FirstOrDefault();
tb.ename = "jack";
_te.ApplyPropertyChanges(tb.EntityKey.EntitySetName, tb);
_te.SaveChanges(true);
}
catch(Exception e)
{
}
}