私たちのアプリケーションでは、NHibernate.LinqでNH2を使用しています。最新バージョンにアップグレードしたい!NHibernateでエンティティの参照をどのように埋めるのですか?もはやINHibernateQueryable
NH3のLinq機能がNHアセンブリに「組み込み」されていることを読んだことがあります。
Now;私はNH4をインストールしましたが、私たちのコードベースもアップグレードする必要があります。私たちのNH2の実装では
我々が使用:NH4で
/// <summary>
/// Gets an <see cref="IQueryable{T}"/> of entities.
/// </summary>
/// <returns>An <see cref="IQueryable{T}"/> of entities.</returns>
public virtual IQueryable<T> GetQueryable() {
return this.Session.Linq<T>();
}
これは/である/でなければならないだろう。
/// <summary>
/// Adds eager-loading for <paramref name="alias"/>.
/// </summary>
/// <typeparam name="T">Queryable type.</typeparam>
/// <param name="source">A queryable.</param>
/// <param name="alias">An expression that tells what to eager load.</param>
/// <returns>A queryable.</returns>
public static IQueryable<T> Expand<T>(this IQueryable<T> source, Expression<Func<T, object>> alias)
{
var nhQueryable = source as INHibernateQueryable;
if (nhQueryable != null)
{
nhQueryable.QueryOptions.AddExpansion(ExpressionProcessor.FindMemberExpression(alias.Body));
}
return source;
}
:
/// <summary>
/// Gets an <see cref="IQueryable{T}"/> of entities.
/// </summary>
/// <returns>An <see cref="IQueryable{T}"/> of entities.</returns>
public virtual IQueryable<T> GetQueryable() {
return this.Session.Query<T>();
}
私たちは熱心ロードを追加するための拡張メソッドを持っています
NH4(。Linq)ではもうINHibernateQueryable
はありませんが、このコードをどのように変換してウィジェットとして機能させることができますかh NHibernate 4はこれまでと同じように...?
Linqを使用してクエリを書いています。 NH3のよう
ありがとう!最終的に 'QueryOver'を使うことに決めました。なぜなら、ルートオブジェクト+結果変換上のいくつかの子要素を使って' Fetch'をより良い方法で連鎖させるからです。それ以外にも、 'IQueryOver <>'型だけに基づいて、移行プロセスの拡張メソッドが簡単になります – 321X