gpt4 book ai didi

c# - NHibernate Criteria QueryByExample 卡在中间的 SQL

转载 作者:太空狗 更新时间:2023-10-29 23:52:29 25 4
gpt4 key购买 nike

我正在使用 Criteria 来加速查询,而且我快完成了。

使用 Query By Example 匹配表中的行,删除具有相同 id 的重复行,然后分页。

当然,在删除重复行之前我无法分页,而且我不知道该怎么做。它可以在 SQL 中完成,但这确实适合流畅的代码,ISQLQuery 不返回 ICriteria 对象。

    public IList<EntitySearch> CriteriaSearch(EntitySearch exampleEntitySearch, int startingPage, int pageSize)
{
var startRow = startingPage * pageSize;

// Query By Example.
var example = Example.Create(exampleEntitySearch)
.IgnoreCase()
.EnableLike(MatchMode.Anywhere)
.ExcludeZeroes();

var results = this.Session.CreateCriteria(typeof(EntitySearch))
.Add(example)
// select * from (SELECT ROW_NUMBER()OVER (partition by Id order by Id) As rankOrder, * FROM EntitySearch) as original where original.rankOrder = 1
.SetFirstResult(startRow)
.SetMaxResults(pageSize)
.List<DealSearch>();

return results;
}

我读到的建议是在 NHibernate 中编写 SQL 查询,但我想不出如何转换漂亮的“ROW_NUMBER() over partition SQL”。我想先让它端到端地工作,然后让它更优雅。

我想将这个峰值投入生产并证明大约 90% 的速度。

最佳答案

我不确定性能,但您可以使用 LINQ:

改变:

.List<DealSearch>();

收件人:

.List<DealSearch>().Distinct().ToList();

关于c# - NHibernate Criteria QueryByExample 卡在中间的 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8014152/

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