【问题标题】:EF Code First - IsConcurrencyToken()EF 代码优先 - IsConcurrencyToken()
【发布时间】:2011-05-12 15:06:19
【问题描述】:

简单,但对我来说却很神秘:为什么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);

我错过了什么吗?

【问题讨论】:

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


    【解决方案1】:

    我的意见...

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

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

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

    最后,我认为IsConcurrencyToken(false) 比IsNotConcurrencyToken() 更好。

    【讨论】:

    • +1 表示“IsConcurrencyToken(false) 优于 IsNotConcurrencyToken()”。相同,但过快阅读第二个可能会让人认为该属性是 ConcurrencyToken (人们可能只是在快速阅读时“跳过”“NOT”)。
    猜你喜欢
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    • 2012-05-17
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多