我有一个视图,它由两个表组成.我想通过视图编辑每个表中的值并保存这些更改,但LINQ引发了一个错误,即无法在同一视图上编辑两个值.
有谁知道一个好的解决方法?
谢谢
SQLServer不支持从视图上的多个表更新列.您可以通过分离列更改来解决此问题,以便您只更新一个表上的列,提交更改,更新另一个表上的更改,然后再次提交更改.您还可以使用存储过程在同一事务中独立更新各个表.可以使用设计器将此存储过程作为方法添加到数据上下文中.假设它在完成时返回与视图相同的模式,它可以返回与视图相同类型的对象.
可更新视图只要满足以下条件,您就可以通过视图修改基础基表的数据:
任何修改(包括UPDATE,INSERT和DELETE语句)都必须仅引用一个基表中的列.要在视图中修改的列必须直接引用表列中的基础数据.这些列不能以任何其他方式派生,例如通过以下方式:聚合函数:AVG,COUNT,SUM,MIN,MAX,GROUPING,STDEV,STDEVP,VAR和VARP.一个计算.无法从使用其他列的表达式计算列.通过使用集合运算符UNION,UNION ALL,CROSSJOIN,EXCEPT和INTERSECT形成的列相当于计算并且也不可更新.要修改的列不受GROUP BY,HAVING或DISTINCT子句的影响.TOP不会在视图的select_statement中的任何位置与WITH CHECK OPTION子句一起使用.