c# - EF CodeFirst 设置默认字符串长度并使用 DataAnnotations 覆盖?

标签 c# entity-framework data-annotations

我将大部分字符串列设置为 50 左右。

我可以将默认字符串生成设置为 50,并且仅在需要与默认值不同时指定 DataAnnotation,而不是将 DataAnnotation [StringLength(50)] 添加到每个字符串属性吗?

例如

[StringLength(200)]
public string Thing1 { get; set; }
public string Thing2 { get; set; }
public string Thing3 { get; set; }
[MaxLength]
public string Thing4 { get; set; }

在此示例中,Thing2 和 Thing3 默认情况下可以是 varchar(50),而 Thing1 和 Thing2 会有所不同,因为我已经专门设置了它们

许多实体和列,因此这不仅可以节省我的时间,而且可以使我的实体类看起来更干净

澄清一下(为了可能出现重复的问题): - 我不介意如何设置默认长度(FluentAPI 或其他任何东西) - 我确实介意如何设置覆盖长度。我想使用 DataAnnotations 进行覆盖

最佳答案

您可以使用自定义代码优先约定。尝试将其添加到您的上下文类中:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Properties<string>() 
                .Configure(c => c.HasMaxLength(500));
}

查看此链接以获取有关 Custom Code First Conventions 的更多信息

关于c# - EF CodeFirst 设置默认字符串长度并使用 DataAnnotations 覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32467804/

相关文章:

c# - 在 Entity Framework 中比较日期的最佳方法

wcf - 通过 WCF 交付 EF 模型的最佳方式是什么?

c# - API/Web 服务创建基础知识

c# - 在 List<T> 中搜索匹配的 2 列

c# - Entity Framework - 在一个查询中有条件地从主表和历史表中提取数据

c# - 获取 DisplayName 属性的所有值

validation - Asp.Net MVC EnableClientValidation 不起作用

c# - IEnumerable 现在是否比 IReadOnlyList 更防水?

c# - 如何将 BouncyCaSTLe X509Certificate 转换为 X509Certificate2?

c# - EF 代码第一个一对多