是的,在字符串列的长度超过默认最大长度的情况下,设置Length
属性会有所不同。
我们有一列 type NVARCHAR(MAX)
。如果我们没有设置该length
属性,如果字符串值的长度大于 4096 个字符,NHibernate 将无法设置字符串值。
(此示例使用 Mapping-By-Code,因为我们在 2017 年 :-)
classMapper.Property(
tickerFeed => tickerFeed.StaticTickerText,
propertyMapper =>
{
propertyMapper.Column("StaticTickerText");
propertyMapper.Length(int.MaxValue);
}
);
但是,我们发现我们可以使用IPropertyMapper.Type
规定它是一个大字符串来获得相同的结果。
classMapper.Property(
tickerFeed => tickerFeed.StaticTickerText,
propertyMapper =>
{
propertyMapper.Column("StaticTickerText");
propertyMapper.Type(NHibernateUtil.StringClob);
}
);
我们最终选择了这个propertyMapper.Type
选项,因为它更明确。