我有一个rowversion(timestamp
)列,设置为在我的EF设计器中计算。
通过直接属性(如
)设置代码中的值 myEnt.rowversion = screenRowVersion;
在调用SaveChanges()
时生效,对SQLServer的跟踪显示使用了rowversion的原始值。
是否可以让DbContext API接受外部计算值?
答案 0 :(得分:1)
EF不允许覆盖计算值 - 它始终使用从数据库加载的原始值。有一种解决方法,您可以欺骗EF并更改上下文跟踪的原始值:
context.Entry(myEnt).OriginalValues["rowversion"] = screenRowVersion;
但无论如何,如果没有时间戳,则不需要。您有旧的时间戳和新的时间戳,因此您可以compare them in your application无需往返数据库。