ASP.NET MVC 4 Code First - 最佳实践:始终为字符串设置maxlength? (SQL Server 2012效率)

时间:2013-06-09 04:07:30

标签: sql-server asp.net-mvc entity-framework asp.net-mvc-4 entity-framework-5

当我开发应用程序数据库优先时,我总是会在varchar或nvarchar字段上设置限制(可能需要的最大值),因为这会减少SQL Server页面大小 - 通常被视为最佳实践。

我注意到Code First,MVC 4,EF5应用程序似乎只是将字符串字段设置为nvarchar(max),除非特别设置。

使用[MaxLength(n)]注释所有模型字符串是最佳实践吗?我几乎没有提到这一点,但在SQL Server级别使用nvarchar(max)似乎是一个坏主意?!

我错过了什么吗?是否有任何基准或硬性统计数据支持这两种方式。

什么被视为最佳做法?

感谢。

1 个答案:

答案 0 :(得分:2)

我绝对建议指定maxlength。您认为始终使用nvarchar(max)这是一个坏主意的假设是正确的(我的意见)。

两种方法都有利弊。

使用nvarchar(max)

的优点
  • 开发速度更快 - 对特定列中可能存储的数据的分析更少
  • 更灵活 - 当您的名称字段为100个字符并且出现101个字符的人时,您不必担心修改架构

反对使用nvarchar(max)

  • 稍慢
  • 对您的数据没有限制 - 为什么让用户存储3000个字符的名称,地址等?
  • 在状态字段上对状态字段nvarchar(2)上的其他开发人员nvarchar(max描述较少。通过查看模式定义,应该存储的内容更为明显。
  • nvarchar(max)无法编入索引。