2

我是否需要在 Entity Framework Code First 中为每个 poco 属性设置长度?如果我没有为属性设置 stringLength 或 maxlength/minlength ,它将是 nvarchar(max) ,nvarchar(max) 有多糟糕?我应该把它留在开发阶段,然后在生产前改进它吗?

4

3 回答 3

1

您应该为要限制长度的每个属性定义一个最大长度。请注意,nvarchar(max)数据类型与数据类型不同nvarchar(n),其中n是 1-4000 之间的数字。max当您没有定义最大长度时获得的版本适用于大块文本,例如段落等。它可以处理非常大的长度,因此数据与记录的其余字段分开存储。nvarchar(n)另一方面,与其余行内联存储。

最好现在就根据需要设置这些值,而不是等到以后再设置。选择尽可能大的值,这样您就不必增加它们。nvarchar(n)有效地存储其信息;例如,anvarchar(200)不一定占用 200 个字符的空间;它只使用足够的空间来存储实际放入其中的内容,再加上几个额外的字节来节省其长度。

因此,只要有可能,您应该对实体的文本字段设置限制。

于 2012-04-27T18:19:52.783 回答
0

NVARCHAR - 是可变长度字段。所以它只占用你需要的空间。另一方面,NCHAR 分配它需要的所有空间,而不是像 NVARCHAR 那样按需分配。当列数据条目的大小可能会有很大差异时,MSDN 建议使用 nvarchar。这是我在项目早期阶段要走的路。您可以在需要时对其进行调整。

于 2012-04-27T02:26:19.860 回答
0

根据下一篇博客文章nvarchar(max) 与 ntext 不同,直到实际值大小未达到 4000 个符号(原因限制为 8K,并且widechars 每个字符使用两个字节)。就它达到这个大小而言,它的行为与 ntext 几乎相同。所以对我来说,我没有看到任何避免使用 nvarchar(max) 数据类型的充分理由。

于 2012-04-28T20:18:35.087 回答