Force Entity Framework 6(EF6)使用nvarchar(MAX)

时间:2018-01-04 09:39:46

标签: sql-server entity-framework ef-code-first

我认为这很容易,但是......

如何强制EF6使用nvarchar(MAX)

我试过了:

[Column(TypeName = "nvarchar(MAX)")]

[Column(TypeName = "nvarchar")]
[MaxLength()]

modelBuilder.Entity<Date>().Property(o => o.test).HasColumnType("nvarchar(MAX)");

我正在使用EF6.2.0和SQL2014 Express

2 个答案:

答案 0 :(得分:2)

如果未指定长度,则EF Code First默认为nvarchar(max),因此如果指定Name列:

public string Name { get; set; }

您将获得一个nvarchar(max)列。

如果您需要指定长度,比如100个字符,那么您可以在代码中指定列:

[StringLength(50)]
public string Name { get; set; }

如果你需要指定varchar而不是nvarchar,你可以使用它:

[Column(TypeName = "VARCHAR")]
[StringLength(50)]
public string Name { get; set; }

请参阅Code First ConventionsCode First Data AnnotationsColumn Annotations

答案 1 :(得分:1)

除了可以在任何地方键入内容之外,您还可以默认将其设置为所需的长度。 在您的 dbcontext

中覆盖函数 OnModelCreating
op_LogicalOr