模型类属性字符串长度为 nvarchar max

Posted

技术标签:

【中文标题】模型类属性字符串长度为 nvarchar max【英文标题】:model class attribute string length as nvarchar max 【发布时间】:2021-03-08 00:23:00 【问题描述】:

如何在模型类属性中分配 ms sql server 数据类型nvarchar max 长度。 假设我有一个属性,StudentName

[Required]
[MinLength(5)]
[MaxLength(200)]
public string StudentName  get; set; 

如何将 StudentName 数据类型设为 nvarchar max?

【问题讨论】:

【参考方案1】:

有一个Column() 属性,您可以使用它来指定确切的SQL Server 数据类型。例如:

[MaxLength(200)]
[Column(TypeName="nvarchar(max)")]
public string StudentName  get; set; 

注意:MaxLength 属性将被 Column 属性覆盖,但在模型绑定中,StudentName 将通过其MaxLength 属性进行验证。

如果您愿意,您可以通过以下方式使用 Fluent API 实现此目的:

 builder.Property(x => x.StudentName)
                .HasMaxLength(200)
                .HasColumnType("nvarchar(max)")
                .IsRequired();

顺便说一句,用MaxLength过滤用户输入是不切实际的,但在数据库中设置字段类型nvarchar(max)

【讨论】:

【参考方案2】:

如果您不想限制字符串MaxLength (200) 的值,为什么要使用MaxLength?您只需删除MaxLength(200) 即可将您的模型更改为nvarchar max

如果您只想在控制器和视图上使用 200 个字符的限制,最好使用ViewModel

【讨论】:

以上是关于模型类属性字符串长度为 nvarchar max的主要内容,如果未能解决你的问题,请参考以下文章

NVARCHAR(MAX) 不能容纳 50478 个字符

NVARCHAR(MAX) 的最大字符数是多少? [复制]

sql中nvarchar(max)长度测试

总是使用nvarchar(MAX)有什么缺点吗?

在 asp.net 核心中使用 NVarChar

insertselectvarchar长度限制