【问题标题】:Entity Framework Core set column to nvarchar(max) with code firstEntity Framework Core 将列设置为 nvarchar(max),代码优先
【发布时间】:2022-11-17 00:55:06
【问题描述】:

我正在使用 Entity Framework Core 7.0.0,在我的 OnModelCreating 方法中,我试图指定一个类型为 nvarchar(max) 的列。

在 EF6(不是 Core!)中,我们能够执行如下操作:

modelBuilder.Entity<Log>().Property(p => p.Errors).IsMaxLength();

但是,我无法在 EF Core 中解决这个问题。 EF Core 中是否有我遗漏的类似内容?

我知道它通常会将 string 类型的所有属性默认为 nvarchar(max) 但我用以下代码覆盖 DbContext 的 ConfigureConventions ,将所有字符串默认为 50 个字符:

configurationBuilder.Properties<string>().HaveMaxLength(50);

【问题讨论】:

    标签: entity-framework entity-framework-core


    【解决方案1】:
    • [Column] 数据注释的帮助下:

      [Column(TypeName = "nvarchar(MAX)")]
      
    • 在 Fluent API 的帮助下:

      entity.Property(p => p.Errors)
            .HasColumnName("YourColumnName")
            .HasColumnType("nvarchar(MAX)");
      
    • HasColumnNameHasColumnName属性应用于属性,以指定当实体的属性名称与数据库列名称不同时,该属性应映射到的数据库列。

    • HasColumnTypeHasColumnType方法应用于属性,以指定当类型与约定不同时属性应映射到的列的数据类型。

    【讨论】:

      猜你喜欢
      • 2016-08-06
      • 2020-04-29
      • 1970-01-01
      • 2017-05-05
      • 1970-01-01
      • 1970-01-01
      • 2014-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多