簡體   English   中英

實體框架中基本實體的流暢配置

[英]Fluent configuration for base entity in Entity Framework

我有以下BaseEntity

public class BaseEntity
{
    public BaseEntity()
    {
        DateCreated = DateTime.UtcNow;
        DateModified = DateTime.UtcNow;
    }

    public DateTime DateCreated { get; set; }
    public DateTime DateModified { get; set; }

    [MaxLength(36)]
    public string CreateUserId { get; set; }

    [MaxLength(36)]
    public string ModifyUserId { get; set; }
}

我所有的其他實體都源自於此。 現在,我想使用流暢的配置而不是DataAnnotations。 我真的必須在每個DbModelBuilder配置中都配置兩個字符串屬性的MaxLength嗎?

我真的必須在每個DbModelBuilder配置中都配置兩個字符串屬性的MaxLength嗎?

可以。您可以配置基本類型驗證,EF會將它們應用於派生類型。 例如:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<BaseEntity>().Property(x => x.CreateUserId).HasMaxLength(36);
    modelBuilder.Entity<BaseEntity>().Property(x => x.ModifyUserId).HasMaxLength(36);

    base.OnModelCreating(modelBuilder);
}

更新(根據您的評論):

您可以使用(而不是新的) Properties()方法基於屬性名稱而不是實體類型定義映射和驗證。

例如:

modelBuilder.Properties().Where(x => x.Name == "CreateUserId").Configure(x => x.HasMaxLength(36));
modelBuilder.Properties().Where(x => x.Name == "ModifyUserId").Configure(x => x.HasMaxLength(36));

參見MSDN

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM