c# - EF CORE 无时间戳的乐观并发
问题描述
我正在处理一堆实体,每个实体都有几个属性。每个属性都涉及对保存的乐观并发检查。我更喜欢避免使用时间戳,因为我应该在每个表上添加字段,我正在使用旧数据库并且我不想对其进行任何更改。采用的方案依赖于在modelBuilder中调用IsConcurrencyToken
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<MyEntity1>(entity =>
{
entity.Property(e => e.Property1).IsConcurrencyToken;
entity.Property(e => e.Property2).IsConcurrencyToken;
entity.Property(e => e.Property3).IsConcurrencyToken;
entity.Property(e => e.PropertyN).IsConcurrencyToken;
});
}
但我真的需要显式调用IsConcurrencyToken
每个属性吗?是否有机会将我的实体配置为在并发检查中自动包含每个属性?
解决方案
是否有机会将我的实体配置为在并发检查中自动包含每个属性?
是的。您可以在 OnModelCreating 中遍历所有实体和属性:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
foreach (var entity in modelBuilder.Model.GetEntityTypes())
{
foreach (var prop in entity.GetProperties())
{
prop.IsConcurrencyToken = true;
}
}
base.OnModelCreating(modelBuilder);
}
推荐阅读
- javascript - 使用 React 时如何初始化随机状态?
- javascript - $.function(){} 在 Jquery 中做了什么?
- javascript - 使用 AdminDirectory 检查用户是否存在
- git - 来自 Git 存储库的 Docker-Compose 构建映像
- python - Requirements.txt 依赖项未在 azure Web 应用程序上使用代码部署
- c# - 用 1 行设置整个 DataRow
- svelte - 在运行等待周期时禁用变量
- rdf - 使用 OWL 和 Protégé 的 RDF 推断子类
- git - 检索分叉存储库的先前状态
- c - 这个声明会变成nop吗?