次のような構成が可能ですか?Funcの配列を持つことは可能ですか
その後、var allDetails = this.preGrantDetailRepository
.AllWithFetch(this.preGrantDetailRepository.All, x => x.Case, x => x.CaseOwner)
は基本的に私からこれらの戦略を指定するために私たちを可能にするために、私たちの抽象リポジトリにNHibernateのための戦略をフェッチの付加を含むしようとしています...このように呼ばれることができ
public IQueryable<T> AllWithFetch<TRelated>(IQueryable<T> existing, params Expression<Func<T, TRelated>>[] fetchExpressions)
{
return fetchExpressions.Aggregate(existing, (current, exp) => current.Fetch(exp));
}
リポジトリのパターンを壊すことなく、私たちのロジック層。たとえば、NHibernateから別のORMに変更した場合、同じリポジトリメソッドを提供できますが、そのORMに実装されています。
問題は、param配列の複数の関数にチェーンしようとすると表示されます。
だから、この作品...
var allDetails = this.preGrantDetailRepository
.AllWithFetch(this.preGrantDetailRepository.All, x => x.Case)
しかし、これは "型の引数は、その使用方法から推測することはできません" messgeで失敗し
var allDetails = this.preGrantDetailRepository
.AllWithFetch(this.preGrantDetailRepository.All, x => x.Case, x => x.CaseOwner)
私は、.NET 3.5、リポジトリのパターンを使用しています、流暢NHibernateは、SQL Server 2008の
EDIT
私は、以下のPorgesの回答の助けを借りて問題を解決しました。私はそれを受け止めました。この問題は、TRelatedの誤った使用に起因していました。ここでは、リポジトリ内の加工方法は...
public IQueryable<T> AllWithFetch<T>(IQueryable<T> existing, params Expression<Func<T, Entity>>[] fetchExpressions)
{
return fetchExpressions.Aggregate(existing, (current, exp) => current.Fetch(exp));
}
ある今AllWithFetch TRelatedと私はのFuncに2つのエンティティ(ケース& CaseOwner)のスーパークラスを使用していません。
はあなたが各FUNCの戻り値としてTRelatedている必要がありますあなたの助けみんな
'.Case'と' .CaseOwner'の戻り値の型は何ですか? – AakashM