gpt4 book ai didi

c# - Entity Framework 中基本实体的流畅配置

转载 作者:行者123 更新时间:2023-11-30 20:23:20 26 4
gpt4 key购买 nike

我有以下 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 吗?

最佳答案

Do I really have to configure the MaxLength of the two string properties in every single DbModelBuilder configuration?

没有。您可以配置基类型验证,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

关于c# - Entity Framework 中基本实体的流畅配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29141227/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com