类似下面的构造是否可行?是否有可能拥有一个Func的参数阵列
public IQueryable<T> AllWithFetch<TRelated>(IQueryable<T> existing, params Expression<Func<T, TRelated>>[] fetchExpressions)
{
return fetchExpressions.Aggregate(existing, (current, exp) => current.Fetch(exp));
}
然后可以这样调用...
var allDetails = this.preGrantDetailRepository
.AllWithFetch(this.preGrantDetailRepository.All, x => x.Case, x => x.CaseOwner)
基本上我想包括增加抓取,NHibernate的战略,我们的抽象资源库,使我们能够从指定这些策略我们的逻辑层没有破坏存储库模式。例如,如果我们从NHibernate更改为另一个ORM,那么我们可以提供相同的存储库方法,但实现该ORM。
当我尝试链接param数组中的多个func时,会出现问题。
所以此工程...
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中
编辑
我在下面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,我使用的函数功能超类的两个实体(案例& CaseOwner)。
感谢您的帮助球员
'.Case'和'.CaseOwner'的返回类型是什么? – AakashM 2012-02-15 10:33:03