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

Remove Entity Framework's extra lookup of RowVersion columns

我需要向所有 table 添加一个 RowVersion 列。出于数据仓库(以及类似的仅限数据库的操作)等原因,我需要它。我不想将它用于并发。

我希望 Entity Framework 继续工作,就像 RowVersion 列不存在一样。但我似乎看不到这样做的方法。

每当我进行更新时,SQL 配置文件告诉我这是正在执行的内容:

update [dbo].[Widget]
set [WidgetCost] = @0
where ([WidgetId] = @1)

select [RowVersionId]
from [dbo].[Widget]
where @@ROWCOUNT > 0 and [WidgetId] = @1

如果 table 上没有 RowVersion 列,则第二个 select 语句不会发生。

如何让 Entity Framework 忽略 RowVersionId 列? 如果可能的话,我更喜欢一种不需要手动编辑 csdl/msdl 每次从数据库更新模型后。 (终究会有人忘记的。)

我试过:

  1. 确保 RowVersionId 列的并发模式设置为 "None"
  2. 正在从 edmx 中删除 RowVersionId 列。 (我似乎无法从模型中删除它。)

注意:只要我在添加列后不更新 EF 设计器 (edmx) 中的 table,它就会按预期工作。所以在 Entity Framework 中有一些东西是这样做的。 (但我不能在添加此列后锁定我的 edmx 从开始更新。)

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

从您的模型中删除 RowVersion 字段 class 它也在映射中