我将大部分字符串列设置为 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/