我的表Sections
(SQL Server)具有ID
作为主键(int, identity)
和SortIndex
列(int)用于排序目的。实体框架不更新由触发器修改的值
该数据库具有一个触发器,它在每个INSERT
设置SortIndex := ID
。显然,我想稍后更改排序索引,方法是交换两行的值。
我使用实体框架访问数据,全部使用MVC3 Web应用程序。
的问题是,当我插入一个新的对象插入到表实体框架不更新的SortIndex
值。它也会缓存所有的数据,所以下面的调用从这个表中获取所有的对象也会给这个对象提供错误的SortIndex
值。
我试图改变EDMX
为StoreGeneratedPattern
此列。这似乎是伟大而优雅的,但并不能解决问题。
如果我设置为Identity
,它会导致EF正确更新的价值,但它成为只读(试图改变时抛出的异常)。将其设置为Computed
与此类似,但不会引发异常,而只是将值写入数据库。
我可以每次重新创建EF对象,如果我需要插入对象之后,再使用它,只是这样做:
DatabaseEntities db = new DatabaseEntities()
但似乎丑陋的解决方法对我来说。
这个问题的解决方案是什么?
很明显,有些东西,不需要我在每个insert
之后采取一些行动(并冒着被遗忘和不被注意的风险)是首选。
可能重复:http://stackoverflow.com/questions/5445243/reload-field-value-modified-in-db-by-trigger-after-insert-update – 2012-03-08 10:14:04
它很相似,但他似乎有一个他不需要写入的字段。 “计算”应该对他很好。它只是因为一些错误而不起作用。 – Arek 2012-03-08 12:51:09