我需要在所有表中添加一个RowVersion列。出于数据仓库(以及类似的仅DB操作)等原因,我需要它。我不想将它用于并发。
我希望Entity Framework继续工作,好像RowVersion列不存在一样。但我似乎无法看到这样做的方法。
当我进行更新时,SQL Profile告诉我这是正在执行的内容:
update [dbo].[Widget]
set [WidgetCost] = @0
where ([WidgetId] = @1)
select [RowVersionId]
from [dbo].[Widget]
where @@ROWCOUNT > 0 and [WidgetId] = @1
如果表中没有RowVersion列,则第二个select语句不会发生。
如何让Entity Framework忽略RowVersionId列?如果可能的话,我更喜欢一种方法,不需要在每次更新模型后手动编辑csdl / msdl数据库。 (最终有人会忘记。)
我试过了:
注意:只要我在添加列后不更新EF的设计器(edmx)中的表,它就会按预期工作。因此,实体框架中有一些东西可以做到这一点。 (但是,在添加此列之后,我无法锁定我的edmx从开始更新。)
答案 0 :(得分:0)
我对此进行了一些调查。如果将RowVersion列的StoreGeneratedPattern从“Computed”更改为“None”,则它不会执行额外查找。
答案 1 :(得分:0)
从模型类中删除RowVersion字段及其映射