【问题标题】:model class attribute string length as nvarchar max模型类属性字符串长度为 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?
【问题讨论】:
标签:
c#
asp.net
asp.net-mvc
entity-framework
asp.net-mvc-4
【解决方案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。