我正在使用Entity Framework,我在表上有一个rowversion(timestamp)字段用于并发。但是,在更新实体对象时,它会不断尝试将rowversion列设置为null,并且出现错误:
'LmpDemoRequest'上的'VerCol'属性无法设置为'null'值。您必须将此属性设置为'Byte []'类型的非null值。
我在实体定义中有VerCol列,但我无法删除“Setter”函数。
如何让实体框架停止尝试设置此列?
答案 0 :(得分:4)
您可以为RowVersion字段传递任意的有效值(例如DateTime.Now)。它们将被服务器生成的值覆盖。
对于EF的未来版本,应该支持“阴影属性”,它存在于模型中但不存在于类中。该功能在此类情况下非常有用。
答案 1 :(得分:0)
我有一个案例,其中一个视图包含一个表中的RowVersion列,该列在视图中保持连接...因此该列有时可能为空。
但是EF4'知道'RowVersion列不能为空,所以即使在简单的LINQ查询中,它也会抛出InvalidOperationException:
'vVoteInfo'上的'PersonRowVersion'属性无法设置为'DBNull'值。您必须将此属性设置为类型为'Byte []'
的非null值
我最后不得不更改视图以将其用于RowVersion列,以便EF很高兴:
coalesce(p._RowVersion, cast(0 as binary(6))) [PersonRowVersion]