c# - 如何在 Entity Framework 流利的 api 中的所有字段上设置默认长度?

标签 c# .net entity-framework ef-fluent-api

是否可以设置所有字符串字段的默认长度(除非我另有说明)? 此刻我真的很烦去添加类似的东西

modelBuilder.Entity<Game>().Property(x => x.YardLine).HasMaxLength(256); 到每个字符串字段,只是为了避免在数据库中的所有字符串列上使用 nvarchar(max)。

最佳答案

你可以使用一个叫做 Custom Code First Conventions 的东西,但前提是您使用的是 Entity Framework 6+。

作为@ranquild mentions , 你可以使用

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);

关于c# - 如何在 Entity Framework 流利的 api 中的所有字段上设置默认长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30874313/

相关文章:

entity-framework - Entity Framework CF 可以存储 'object type' 值吗?

c# - 实体 DBContext 到 LinQ

c# - “Identifier Expected”错误?

c# - 使用 WCF 服务的互操作服务创建 Excel 文件流

.net - RDLC(VS 2010)如何访问DataObjects上的嵌套类或数组

c# - 如何确定 Assembly.LoadFrom 真的加载了一个 DLL 文件?

c# - 在 EF 中将外键 id 设置为 null 非常慢

c# - 如何从中获取日期字符串?

c# - 过滤 XML 文档部分的有效方法

c# - 具有内部属性的 JSON Serializer 对象