删除 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 每次从数据库更新模型后。 (终究会有人忘记的。)
我试过:
- 确保 RowVersionId 列的并发模式设置为 "None"
- 正在从 edmx 中删除 RowVersionId 列。 (我似乎无法从模型中删除它。)
注意:只要我在添加列后不更新 EF 设计器 (edmx) 中的 table,它就会按预期工作。所以在 Entity Framework 中有一些东西是这样做的。 (但我不能在添加此列后锁定我的 edmx 从开始更新。)
我对此进行了更多调查。如果将 RowVersion 列的 StoreGeneratedPattern 从 "Computed" 更改为 "None",则它不会进行额外的查找。
从您的模型中删除 RowVersion 字段 class 它也在映射中
我需要向所有 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 每次从数据库更新模型后。 (终究会有人忘记的。)
我试过:
- 确保 RowVersionId 列的并发模式设置为 "None"
- 正在从 edmx 中删除 RowVersionId 列。 (我似乎无法从模型中删除它。)
注意:只要我在添加列后不更新 EF 设计器 (edmx) 中的 table,它就会按预期工作。所以在 Entity Framework 中有一些东西是这样做的。 (但我不能在添加此列后锁定我的 edmx 从开始更新。)
我对此进行了更多调查。如果将 RowVersion 列的 StoreGeneratedPattern 从 "Computed" 更改为 "None",则它不会进行额外的查找。
从您的模型中删除 RowVersion 字段 class 它也在映射中