EF Code First - IsConcurrencyToken()

时间:2011-05-12 15:06:20

标签: c# entity-framework ef-code-first

对我来说简单但又神秘:为什么StringPropertyConfiguration(以及所有其他PropertyConfiguration)类对IsConcurrencyToken()有2次重载?

第一个:

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);

我错过了什么吗?

1 个答案:

答案 0 :(得分:4)

我的意见......

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

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

  • 覆盖POCO上的[ConcurrencyCheck]属性
  • 允许约定(在EF 4.1 RTW中删除)根据某些自定义约定启用/禁用ConcurrencyMode

最后,我认为IsConcurrencyToken(false)优于IsNotConcurrencyToken()