如何使用EntityFramework 4.1 DbContext API覆盖计算值

时间:2011-07-06 03:37:14

标签: .net entity-framework-4.1

我有一个rowversion(timestamp)列,设置为在我的EF设计器中计算。

通过直接属性(如

)设置代码中的值
     myEnt.rowversion = screenRowVersion;

在调用SaveChanges()时生效,对SQLServer的跟踪显示使用了rowversion的原始值。

是否可以让DbContext API接受外部计算值?

1 个答案:

答案 0 :(得分:1)

EF不允许覆盖计算值 - 它始终使用从数据库加载的原始值。有一种解决方法,您可以欺骗EF并更改上下文跟踪的原始值:

context.Entry(myEnt).OriginalValues["rowversion"] = screenRowVersion;

但无论如何,如果没有时间戳,则不需要。您有旧的时间戳和新的时间戳,因此您可以compare them in your application无需往返数据库。