当我开发应用程序Database First时,我总是会对varchar或nvarchar字段设置限制(可能需要的最大值),因为这可以减少SQL Server页面大小,并且通常被视为最佳实践。
我注意到Code First, MVC 4, EF5应用程序似乎只是将字符串字段设置为nvarchar(max),除非特别设置。
用[MaxLength(n)]注释所有模型字符串是最佳实践吗?我很少看到有人提到这一点,但在SQL Server级别使用nvarchar(max)似乎是个坏主意?!
我错过了什么吗?是否有任何基准或硬数据来支持这种方式?
什么被视为最佳实践?
谢谢。
我绝对建议指定maxlength。你认为总是使用nvarchar(max)
是个坏主意的假设是正确的(我的观点)。
两种方法各有利弊。
使用nvarchar(max)
的优点
- 更快的开发-更少的分析哪些数据可能存储在特定列
- 更灵活——当你的名字字段是100个字符时,你不必担心修改模式,而一个名字是101个字符的人出现在
使用nvarchar(max)
的缺点
- 略慢
- 对您的数据没有限制-为什么让用户存储3000个字符的名称,地址等?
- 对其他开发人员的描述较少-
nvarchar(2)
在状态字段上与nvarchar(max
)在状态字段上。只需查看模式定义,就可以更明显地看到应该存储什么。 -
nvarchar(max)
无法被索引