EF Code First - IsConcurrencyToken()
本文关键字:IsConcurrencyToken Code First EF | 更新日期: 2023-09-27 17:56:09
简单,但对我来说却很神秘:为什么StringPropertyConfiguration(以及所有其他PropertyConfiguration)类有2个重载IsConcurrencyToken()
?
第一个:
public StringPropertyConfiguration IsConcurrencyToken()
将属性配置为 乐观并发令牌。
第二个:
public StringPropertyConfiguration IsConcurrencyToken(bool?)
配置属性是否 是要当乐观的 并发令牌。
为什么要使用一个而不是另一个?在我看来,这两个重载之间根本没有区别(至少在使用它们时没有)......
通过使用第一个,你会写出类似的东西:
modelBuilder.Entity<Author>()
.Property(x => x.Name)
.IsConcurrencyToken();
通过使用第二个,您将编写:
modelBuilder.Entity<Author>()
.Property(x => x.Name)
.IsConcurrencyToken(true/false/null);
我错过了什么吗?
我的意见...
IsConcurrencyToken()
默认为 true,以提供简单、流畅的方式来定义实体。
IsConcurrencyToken(bool?)
允许作者明确设置实体的ConcurrencyMode
。这对于高级方案很有用:
- 覆盖 POCO 上的
[ConcurrencyCheck]
属性 - 允许约定(在 EF 4.1 RTW 中删除)根据某些自定义约定启用/禁用
ConcurrencyMode
最后,我认为IsConcurrencyToken(false)
比IsNotConcurrencyToken()
好。