gpt4 book ai didi

c# - NHibernate ICriterion .NET 委托(delegate)不匹配

转载 作者:太空宇宙 更新时间:2023-11-03 16:18:08 24 4
gpt4 key购买 nike

我在带有 DI 的存储库模式中使用 NHibernate 以保持灵 active 。我不希望关联的接口(interface)公开任何特定于供应商的信息,例如 ICriterion。但是,我希望我的查询类接受可以放入 .Where 子句中的委托(delegate)。

我需要这样的东西:

public IEnumerable<MyClass> Execute(Func<MyClass, bool> selector)
{
return session
.QueryOver<MyClass>()
.Where(selector)
.....
}

有没有办法实现这一点,还是我的做法不对?

最佳答案

你没有走错路。我认为你的代码有效;您的问题是您在完成过滤的内存中检索所有表。

我想这应该能够在数据库级别对可以转换为 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();
}

希望对你有帮助

关于c# - NHibernate ICriterion .NET 委托(delegate)不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15041543/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com