Configuration 是否有方法使用EF 4.2 codefirst配置,使用设置的maxlength值覆盖nvarchar(最大值)?
默认情况下,EF 4.2 codefirst将字符串属性后面的数据库列设置为nvarchar(max) 单独(每个属性)我可以通过指定Configuration 是否有方法使用EF 4.2 codefirst配置,使用设置的maxlength值覆盖nvarchar(最大值)?,configuration,entity-framework-4.1,ef-code-first,conventions,maxlength,Configuration,Entity Framework 4.1,Ef Code First,Conventions,Maxlength,默认情况下,EF 4.2 codefirst将字符串属性后面的数据库列设置为nvarchar(max) 单独(每个属性)我可以通过指定[MaxLength(512)]属性来覆盖此约定 有没有一种方法可以全局应用这样的配置?modelbuilder上的配置api似乎只允许每个实体覆盖,而modelbuilder上的约定api只允许删除。请参阅此项。否没有可用的全局配置。自定义约定在CTP阶段首先从EF代码中删除。我认为您可以这样做。在模型表中属性的正上方添加StringLength属性。就像下面一
[MaxLength(512)]
属性来覆盖此约定
有没有一种方法可以全局应用这样的配置?modelbuilder上的配置api似乎只允许每个实体覆盖,而modelbuilder上的约定api只允许删除。请参阅此项。否没有可用的全局配置。自定义约定在CTP阶段首先从EF代码中删除。我认为您可以这样做。在模型表中属性的正上方添加StringLength属性。就像下面一样。(请记住,您需要包括使用System.ComponentModel.DataAnnotations;) 更新
- 首先,不能在nvarchar(MAX)列上创建索引。可以使用全文索引,但不能在列上创建索引以提高查询性能
- 从储存角度来看,当N<4000时,nvarchar(最大)和nvarchar(N)之间没有差异。数据存储在行中或不适合时存储在行溢出页上。当您使用nvarchar(max)并存储超过4000个字符(8000字节)时,SQL Server将使用不同的方法存储数据—与旧的文本数据类型类似—它存储在LOB页面中
- 性能方面-同样,对于更多的io操作->性能下降。如果是这种情况,您可以尝试进行垂直分区,并将nvarchar字段移动到不同的表中
[StringLength(160)]
public string Title { get; set; }