我正在构建一个这样的查询:
private void Test()
{
ISession session = sessionFactory.OpenSession();
var query = session.GetNamedQuery("testQuery");
string s = BuildVeryLongString(); // length more that 4000 chracters
query.SetParameter("Param", s, NHibernateUtil.String);
query
.SetResultTransformer(new AliasToBeanResultTransformer(type))
.List<Type>();
}
在DB-profiler中,我可以看到Param
的类型nvarchar(4000)
是不够的。有没有办法说NHibernate,我将使用更长的字符串?
附: DB是MSSQL 2005.
提前谢谢!
答案 0 :(得分:2)
假设Param
用作映射属性的约束,则查询将尝试根据映射属性使用参数的正确数据类型和长度。 Param
是否与映射到nvarchar(max)列的属性相关?如果是这样,您是否正确设置了数据长度?如果希望Nhibernate将其识别为nvarchar(max),则应将字符串列上的数据长度设置为超过4000的长度(4001应该有效)。