C# EF代码优先-IsConcurrencyToken()

C# EF代码优先-IsConcurrencyToken(),c#,entity-framework,ef-code-first,C#,Entity Framework,Ef Code First,简单但对我来说却很神秘:为什么(以及所有其他PropertyConfiguration)类对IsConcurrencyToken()有2个重载 第一: public-StringPropertyConfiguration是ConcurrencyToken() 将属性配置为用作 乐观并发令牌 第二点: publicstringpropertyconfigurationisconcurrencytoken(bool?) 配置属性是否为空 是用来表示乐观的 并发令牌 你为什么要用一个而不是另一个?在我

简单但对我来说却很神秘:为什么(以及所有其他PropertyConfiguration)类对
IsConcurrencyToken()
有2个重载

第一:

public-StringPropertyConfiguration是ConcurrencyToken()

将属性配置为用作 乐观并发令牌

第二点:

publicstringpropertyconfigurationisconcurrencytoken(bool?)

配置属性是否为空 是用来表示乐观的 并发令牌

你为什么要用一个而不是另一个?在我看来,这两个重载之间没有任何区别(至少在使用它们时没有区别)

通过使用第一个选项,您可以编写如下内容:

modelBuilder.Entity<Author>()
    .Property(x => x.Name)
    .IsConcurrencyToken();
modelBuilder.Entity()
.Property(x=>x.Name)
.IsConcurrencyToken();
用第二个字母你会写:

modelBuilder.Entity<Author>()
    .Property(x => x.Name)
    .IsConcurrencyToken(true/false/null);
modelBuilder.Entity()
.Property(x=>x.Name)
.IsConcurrencyToken(真/假/空);
我错过什么了吗?

我的看法

IsConcurrencyToken()
默认为true,以提供一种简单、流畅的方式来定义实体

IsConcurrencyToken(bool?
允许作者确定设置实体的
ConcurrencyMode
。这对于高级场景非常有用:

  • 覆盖POCO上的
    [ConcurrencyCheck]
    属性
  • 允许约定(在EF 4.1 RTW中删除)基于某些自定义约定启用/禁用
    并发模式
最后,我认为,
IsConcurrencyToken(false)
优于
IsNotConcurrencyToken()

+1,因为“IsConcurrencyToken(false)优于IsNotConcurrencyToken()。这是一样的,但是读第二个太快可能会让人认为该属性是一个ConcurrencyToken(在快速阅读时可能只是“跳过”了“不是”)。