如何在Entity Framework Fluent API中设置所有字段的默认长度?

3

是否可以设置所有字符串字段的默认长度(除非我另有说明)?
目前,每次为了避免在数据库中的所有字符串列上使用nvarchar(max),都需要添加类似下面的内容:

modelBuilder.Entity<Game>().Property(x => x.YardLine).HasMaxLength(256);

2个回答

3
您可以使用称为自定义代码优先约定的东西,但仅适用于使用Entity Framework 6+的情况。
正如@ranquild所提到的那样,您可以使用。
modelBuilder.Properties<string>().Configure(p => p.HasMaxLength(256));

配置所有字符串属性的默认最大长度。您甚至可以过滤要应用配置的属性:
modelBuilder.Properties<string>()
    .Where(p => someCondition)
    .Configure(p => p.HasMaxLength(256));

最后,实体类型本身的任何配置都将具有优先权。例如:
modelBuilder.Entity<EntityType>().Property(x => x.StringProperty)
    .HasMaxLength(DifferentMaxLength);

1
添加这个:

modelBuilder.Properties<string>().Configure(p => p.HasMaxLength(256)); 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接