如何在 entity framework fluent api 中设置所有字段的默认长度?
How to set default length on all fields in entity framework fluent api?
是否可以设置所有字符串字段的默认长度(除非我另有说明)?
目前我真的很烦去添加像
这样的东西
modelBuilder.Entity<Game>().Property(x => x.YardLine).HasMaxLength(256);
到每个字符串字段,只是为了避免在数据库中的所有字符串列上使用 nvarchar(max)。
添加这个:
modelBuilder.Properties<string>().Configure(p => p.HasMaxLength(256));
您可以使用名为 Custom Code First Conventions 的东西,但前提是您使用的是 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);
是否可以设置所有字符串字段的默认长度(除非我另有说明)? 目前我真的很烦去添加像
这样的东西modelBuilder.Entity<Game>().Property(x => x.YardLine).HasMaxLength(256);
到每个字符串字段,只是为了避免在数据库中的所有字符串列上使用 nvarchar(max)。
添加这个:
modelBuilder.Properties<string>().Configure(p => p.HasMaxLength(256));
您可以使用名为 Custom Code First Conventions 的东西,但前提是您使用的是 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);