5

を使用してストアドプロシージャを実行し、を使用GetNamedQueryして文字列パラメータを設定していますSetString。NHibernateは文字列パラメータをに設定しますNVarchar(4000)。私の文字列パラメータ値は実際にはこれより長いため、切り捨てられます。

クエリを実行するときにNHibernateに長い文字列型を使用するように指示する方法はありますか?クエリは、マッピングファイルで単純に定義されています。exec dbo.ProcessUploads :courseId, :uploadxml

編集:私のパラメータはどちらも、関係するエンティティのプロパティではありません。

4

2 に答える 2

12

NHibernateにはパラメータの長さを自動的に設定するための十分な情報がないため、手動で設定する必要があります。

例:

session.GetNamedQuery("ProcessUploads")
       .SetParameter("courseId", courseId)
       .SetParameter("uploadXml", uploadXml, NHibernateUtil.StringClob)
       .ExecuteUpdate();

この場合、私はを使用しています。StringClobこれはに変換されNVARCHAR(max)ます。

于 2012-06-29T23:29:32.703 に答える
1

パラメータを表示するか、HBMファイルを確認する必要があります。そこで、フィールド/プロパティタイプ、長さを指定できます。

ここでは、公式のnHibernateドキュメントで読むことができます

于 2012-06-29T14:51:13.077 に答える