NHibernate - 将长字符串设置为查询参数

时间:2011-02-08 12:13:53

标签: c# sql-server-2005 nhibernate


我正在构建一个这样的查询:

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.
提前谢谢!

1 个答案:

答案 0 :(得分:2)

假设Param用作映射属性的约束,则查询将尝试根据映射属性使用参数的正确数据类型和长度。 Param是否与映射到nvarchar(max)列的属性相关?如果是这样,您是否正确设置了数据长度?如果希望Nhibernate将其识别为nvarchar(max),则应将字符串列上的数据长度设置为超过4000的长度(4001应该有效)。