给定一个包含以下列的表: ( Id int pk,Count1 int,Count2 int,Count3 int )
对于一行,如果Count2没有改变,我想只更新(inc / dec)Count2,无论其他列是否改变。
例如: 如果我读(Count1,Count2,Count3):
(1,4,5)我想增加/减少Count2,如果它是(*,4,*)而不是它的(*,3,*)
我可以写一个原始的SQL查询,但我想知道是否可以没有。
更新
结果应该等同于查询:
UPDATE Table SET Count2 = @NewValue WHERE Count2 = @OriginalValue
并返回受影响结果的nr /如果没有更新行则抛出异常。
答案 0 :(得分:0)
您可以使用更改跟踪器将原始值与列中的当前值进行比较。
var entry = context.ChangeTracker.Entries<EntityType>()
.First(e => e.Id = 22); // find your entity
// compare the value entry.OriginalValues to the current value
然后,您可以将实体状态设置为您需要的任何内容。