0

NH 3.0から3.1にアップグレードしてから、次のコードを使用する際に問題が発生しました。

 criteria = session.CreateCriteria<User>()
    .Add(SqlExpression.InG<User, int>(user => user.ID, toBeFechted)); // toBefetched is an IList<int>

これは正常にコンパイルされますが、実行すると、条件にIn条件を追加するとすぐに例外が発生します。

System.MissingMethodException:メソッドが見つかりません:NHibernate.Criterion.AbstractCriterion NHibernate.Criterion.Restrictions.InG(System.String、System.Collections.Generic.ICollection 1<**UNKNOWN TYPE**>). at NHibernate.LambdaExtensions.SqlExpression.InG(Expression1式、ICollection`1値)

Criteriaの代わりにQueryOverを使用してクエリを再構築できますが、それは機能しますが、それを行うには、時間がない多くのコードを掘り下げる必要があります。NH 3.0を使用しても、問題はありませんでした。

NH 3.1で何か変更がありましたか、それともdllに奇妙な問題がありますか?

4

1 に答える 1

1

NH2.1アセンブリ上に構築されたGooglecodeの古いスタイルのNHLambdaExtensionsを使用している場合、2つのオプションがあります。-そのまま3.0にダウングレードするか、ソースコードをダウンロードして後のバイナリに対してコンパイルすることができます。

これを行いたくない場合は、NH3.1に対して構築されたNHlambdaextensionsのコピーがあります。これには、ある程度のカバレッジを提供するために合格した元のテストがすべて含まれています。

于 2011-06-09T09:21:07.620 に答える