如果在实体框架中未更改特定列,如何更新?

时间:2016-02-24 09:08:29

标签: entity-framework

给定一个包含以下列的表: ( 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 /如果没有更新行则抛出异常。

1 个答案:

答案 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

然后,您可以将实体状态设置为您需要的任何内容。