删除Entity Framework对RowVersion列的额外查找

时间:2015-06-22 23:56:57

标签: sql-server entity-framework sql-server-2012 entity-framework-5 rowversion

我需要在所有表中添加一个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数据库。 (最终有人会忘记。)

我试过了:

  1. 确保RowVersionId列的并发模式设置为“无”
  2. 从edmx中删除RowVersionId列。 (我似乎无法从模型中删除它。)
  3. 注意:只要我在添加列后不更新EF的设计器(edmx)中的表,它就会按预期工作。因此,实体框架中有一些东西可以做到这一点。 (但是,在添加此列之后,我无法锁定我的edmx从开始更新。)

2 个答案:

答案 0 :(得分:0)

我对此进行了一些调查。如果将RowVersion列的StoreGeneratedPattern从“Computed”更改为“None”,则它不会执行额外查找。

答案 1 :(得分:0)

从模型类中删除RowVersion字段及其映射