NHibernate ICriteration.NET委托不匹配
本文关键字:不匹配 NET ICriteration NHibernate | 更新日期: 2023-09-27 18:00:37
我在带有DI的存储库模式中使用NHibernate来保持灵活性。我不希望关联的接口公开任何特定于供应商的东西,比如ICriteration。但是,我希望我的查询类接受一个可以放入.Where子句的委托。
我需要类似的东西:
public IEnumerable<MyClass> Execute(Func<MyClass, bool> selector)
{
return session
.QueryOver<MyClass>()
.Where(selector)
.....
}
有没有办法实现这一点,或者我的做法是错误的?
你没有走错路。我认为你的代码是有效的;您的问题是,在进行过滤的内存中检索所有表。
我想这应该可以在DB级别过滤可以转换为SQL:的条件
public IEnumerable<MyClass> Execute(Expression<Func<MyClass, bool>> selector)
{
return session.Query<MyClass>().Where(selector).ToList();
}
我打赌这也应该起作用:
public IEnumerable<MyClass> Execute(Expression<Func<MyClass, bool>> selector)
{
return session.QueryOver<MyClass>().Where(selector).ToList();
}
希望这将有助于