请教Linq在没有数据变动的时候怎么触发触发器

请问Linq在没有数据变动的时候如何触发触发器?
本帖最后由 romanchaos 于 2014-05-22 14:12:59 编辑
有时候有些东西要重新统计,例如库存表Inv中的锁定库存,触发器是放在库存表那里。但编辑订单Order后想要触发一下库存表的触发器来重新统计,这时lstInv.ForEach(p => p.Count = p.Count);这类语句貌似由于前后数据一致而不会产生update inv的sql语句。由于Inv表有很多操作为了保证数据正确所以触发器不能放到order表,请问还有什么其他办法么?
------解决方案--------------------
使用触发器就是为了方便,如果频繁调用造成其他问题,那就只能舍弃这种便利,那就把统计功能放到存储过程,由程序在适当时候调用.
------解决方案--------------------
没有数据变动去触发什么触发器?要进行计算,应该调用存储过程。
------解决方案--------------------
“时lstInv.ForEach(p => p.Count = p.Count);这类语句”这是什么意思?这明明是给内存中的数据赋值(而且还是没有意义的赋值),跟数据库有什么关系?

你只知道触发器,不知道存储过程吗?既然有相同的sql代码需要在不同地方调用,那么就应该单独提取出来,设计为独立的存储过程(或者自定应函数),在各种不同的触发器、存储过程中都可以反复调用同一个存储过程。

这是设计知识。