c# – nHibernate的问题区分和分页

c# – nHibernate的问题区分和分页,第1张

概述我有这个使用QueryOver API的Repository方法 public IList<Message> ListMessagesBy(string text, IList<Tag> tags, int pageIndex, out int count, out int pageSize) { pageSize = 10; var likeString 我有这个使用queryOver API的Repository方法
public IList<Message> ListMessagesBy(string text,IList<Tag> Tags,int pageIndex,out int count,out int pageSize)    {        pageSize = 10;        var likeString = string.Format("%{0}%",text);        var query = session.queryOver<Message>()            .Where(Restrictions.On<Message>(m => m.Text).Islike(likeString) ||            Restrictions.On<Message>(m => m.Fullname).Islike(likeString));        if (Tags.Count > 0)        {            var tagIDs = Tags.Select(t => t.ID).ToList();            query                .JoinqueryOver<Tag>(m => m.Tags)                .WhereRestrictionOn(t => t.ID).IsInG(tagIDs)                .transformUsing(transformers.distinctRootEntity);        }                                count = 0;        if(pageIndex < 0)        {            count = query.ToRowCountquery().FutureValue<int>().Value;            pageIndex = 0;        }        return query.OrderBy(m => m.Created).Desc.Skip(pageIndex * pageSize).Take(pageSize).List();    }

我试过了两个

.transformUsing(transformers.distinctRootEntity);

.RootCriteria.SetResulttransformer(new distinctEntityRoottransformer())

它搞砸了总计数(它返回结果无明显)和实际的分页(Skip / Take)

我怎样才能解决这个问题?

提前谢谢,安德斯

解决方法 尝试这样的事情
public IPagedList<ClIEnt> Find(int pageIndex,int pageSize){    ClIEnt clIEntAlias = null;    var query = Session.queryOver<ClIEnt>(() => clIEntAlias)        .Select(            Projections.distinct(                Projections.ProjectionList()                    .Add(Projections.Property<ClIEnt>(x => x.ID).As("ID"))                    .Add(Projections.Property<ClIEnt>(x => x.name).As("name"))                    .Add(Projections.Property<ClIEnt>(x => x.Surname).As("Surname"))                    .Add(Projections.Property<ClIEnt>(x => x.Givenname).As("Givenname"))                    .Add(Projections.Property<ClIEnt>(x => x.EmailAddress).As("EmailAddress"))                    .Add(Projections.Property<ClIEnt>(x => x.MobilePhone).As("MobilePhone"))            )        )        .transformUsing(transformers.AliasToBean<ClIEnt>())        .OrderBy(() => clIEntAlias.Surname).Asc        .ThenBy(() => clIEntAlias.Givenname).Asc;    var count = query        .ToRowCountquery()        .FutureValue<int>();    return query        .Take(pageSize)        .Skip(Pagination.FirstResult(pageIndex,pageSize))        .List<ClIEnt>()        .topagedList(pageIndex,pageSize,count.Value);}
总结

以上是内存溢出为你收集整理的c# – nHibernate的问题区分和分页全部内容,希望文章能够帮你解决c# – nHibernate的问题区分和分页所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1246281.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存