我正在使用流畅API构建一个EF6的代码优先模型。据我所知,默认情况下,字符串将是nvarchar(max)
,这(直白地说)对于默认值来说是愚蠢的。因此,我添加了以下约定代码,将最大默认长度设置为255个字符:
modelBuilder.Properties<string>()
.Configure(p => p.HasMaxLength(255));
然后我创建了一个装饰器,代码如下:
[AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
public class TextAttribute : Attribute
{
}
我想将其应用于我实际希望为NVARCHAR(MAX)
的特定字符串属性。
在流畅API中,我应该放什么以确保所有具有[Text]
修饰符的字符串属性都在数据库中以NVARCHAR(MAX)
构建? 我假设它会像这样:
modelBuilder.Properties<string>()
.Where(p => p.CustomAttributes.Any(a => typeof(TextAttribute).IsAssignableFrom(a.AttributeType)))
.Configure(p => p.HasMaxLength(?????));
或者说我完全做错了吗?