Tag: icriteria

NHibernate – 使用ICriteria进行分页和可选的ICriteria调用

我想做这样的事…… return GetSession() .ToPagedList(page, pageSize, x=> x.SetFetchMode(DomainModelHelper.GetAssociationEntityNameAsPlural(), FetchMode.Eager)); 但我不知道如何将这个Func传递到ISession或ICriteria 。 我有一个标准的分页扩展方法,这个扩展方法应该有一个重载,我可以传递额外的ICriteria方法,这样我还可以设置FetchMode或其他东西。 扩展方法: public static class CriteriaExtensions { public static PagedList ToPagedList(this ISession session, int page, int pageSize) where T : Entity { var totalCount = TotalCount(session); return new PagedList(session.CreateCriteria() .SetFirstResult(pageSize * (page – 1)) .SetMaxResults(pageSize * page) .Future().ToList(), page, pageSize, totalCount); } public static PagedList […]

NHibernate预测和“有”条款

我正在使用NHibernate使用条件API查询我的数据库。 我的标准如下: ICriteria c = Session.CreateCriteria(typeof(Transaction)); ProjectionList projections = Projections.ProjectionList(); projections.Add(Projections.Sum(“Units”), “Units”); projections.Add(Projections.GroupProperty(“Account”), “Account”); projections.Add(Projections.GroupProperty(“Security”), “Security”); c.SetProjection(projections); 这工作正常,但我想要的是一种方法,能够限制查询只在“Units”属性> 0时返回。在SQL中我只是我们一个Having Units > 0子句但是我没有能够在NHibernate中找到一种方法。 有没有人有任何想法或是我唯一的选择使用HQL?

使用nhibernate和ICriteria连接两个不相关的视图表

我有两个基于两个视图的实体。 映射看起来像这样: 完全A: 实体B: 实体A基于表视图,该视图是用于搜索优化的更复杂的表结构的展平视图。 现在,我希望能够通过使用NHibernate和Criteria-API从实体A中获取Id在实体B中 “InvoiceId”列中的所有行,以获取实体B中“ResourceId”的特定值。 这两个表都是视图,它们没有声明的关系。 我在C#中尝试了以下代码,但它不起作用: var criteria = _session.CreateCriteria(typeof(SearchView)); criteria.CreateAlias(“SearchInvoiceResourceLookUpView”, “srf”,JoinType.InnerJoin) .Add(Restrictions.EqProperty(“sfr.InvoiceId”, “Id”)) .Add(Restrictions.Eq(“sfr.ResourceId”, invoiceResId)); 用于此目的的原始SQL将是: SELECT * FROM SearchView JOIN SearchInvoiceResourceLookUpView srf on srf.InvoiceId = Id WHERE srf.ResourceId = ‘[Inser resource id here]’ 我该如何解决这个问题? 还有另一种更好的方法吗?

NHibernate如何查询IList 属性?

我试图使用NHibernate查询我的一个域类上的IList 属性。 这是一个简单的例子来演示: public class Demo { public Demo() { this.Tags = new List(); } public virtual int Id { get; set; } public virtual string Name { get; set; } public virtual IList Tags { get; set; } } 映射如下: 我能够保存和检索就好了。 现在查询我的域类的实例,其中Tags属性包含指定的值: var demos = this.session.CreateCriteria() .CreateAlias(“Tags”, “t”) .Add(Restrictions.Eq(“t”, “a”)) .List(); 导致错误:集合不是关联:Demo.Tags var demos […]