EF Core HasMaxLength()怎么用 EF Core设置字符串最大长度

admin 百科 17
HasMaxLength()用于Fluent API中为string属性设数据库列最大长度,如nvarchar(100),仅影响迁移结构与验证,不约束C#运行时长度,优先级高于数据注解。

EF Core HasMaxLength()怎么用 EF Core设置字符串最大长度-第1张图片-佛山资讯网

EF Core 中的 HasMaxLength() 用于在模型配置中为字符串属性指定数据库列的最大长度(即 nvarchar(50) 这类限制),它只影响迁移生成的数据库结构和验证行为,不控制 C# 层的字符串实际长度。

在哪用?——推荐在 Fluent API 中配置

通常在 OnModelCreating() 方法里用,比数据注解(如 [StringLength(100)])更灵活,尤其适合处理复杂规则或第三方类。

  • 对实体属性调用 Property().HasMaxLength(n)
  • 必须配合 string 类型使用(对 int、DateTime 等无效)
  • 若同时用了数据注解,Fluent API 优先级更高

怎么写?——常见写法示例

比如有个 User 实体:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<User>()
        .Property(u => u.Name)      // 字符串属性
        .HasMaxLength(100);        // 生成 nvarchar(100)
<pre class="brush:php;toolbar:false;">modelBuilder.Entity<User>()
    .Property(u => u.Email)
    .HasMaxLength(255);        // 常用于邮箱字段

登录后复制

}

执行 dotnet ef migrations add Init 后,生成的迁移代码里会出现类似:

标签: mysql ai 邮箱 c# red

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~