我需要在我的所有表中添加一个 RowVersion 列。我需要它是出于数据仓库(以及类似的仅数据库操作)之类的原因。我不想将它用于并发。
我希望实体框架继续工作,就好像 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 语句。
如何让实体框架忽略 RowVersionId 列? 如果可能的话,我更喜欢在每次从数据库更新模型后不需要手动编辑 csdl/msdl 的方法。(有人最终会忘记。)
我试过了:
- 确保 RowVersionId 列的并发模式设置为“无”
- 从 edmx 中删除 RowVersionId 列。(我似乎无法从模型中删除它。)
注意:只要我在添加列后不更新 EF 设计器 (edmx) 中的表,它就会按预期工作。所以实体框架中有一些东西可以这样做。(但我不能在添加此专栏后从开始更新时锁定我的 edmx。)