Tag: nhibernate criteria

NHibernate COALESCE问题

我试图用NHibernate表达以下SQL查询 DECLARE @date DATETIME = NULL; SELECT ER.Id , ER.DocumentDate FROM ExpenseReport ER WHERE ER.PeriodFrom >= COALESCE(@date, ER.PeriodFrom) OR ER.PeriodTo <= COALESCE(@date, ER.PeriodTo); 所以,在C#部分,我确实有以下类: 对于实体:ExpenseReport 对于我的搜索本身是一个单独的类 代码片段: // —– Entity class. public partial class ExpenseReport { public Nullable PeriodFrom { get; set; } // many other properties } // —– Search parameter class. public class […]

Nhibernate n + 1与三元关系。 想要三元组中的中间实体

我对nhibernate n + 1有一个很大的问题,我尝试的似乎没有解决问题。 Nhibernate profiler仍显示n + 1选择命中数据库。 这是我的模特: public class CustomerGroup : CoreObjectBase { public virtual long GroupId { get; set; } public virtual Site Site { get; set; } public virtual IList Customers { get; set; } public virtual string Name { get; set; } public virtual string DisplayName { get; set; } […]

在NHibernate中设置TimeOut Expired

我在sql server 2008 R2中有一个存储过程,它工作正常,但突然它抛出了TimeOut Expiration的例外。 BmDaoSession.CreateSQLQuery(“exec SP_Name @Param1 = ‘” + clientCode + “‘, @Param2 ='” + existingDatabase + “‘, @Flag='” + flag + “‘”).ExecuteUpdate(); 我使用上面的NHibernate命令来调用我的SP。 我的问题是如何在NHibernate中设置TimeOut Expiration。 谢谢

NHibernate Filtered Child Collection Lazy Loaded,即使指定了eager fetch也是如此

我试图找出为什么没有过滤返回子集合,即使急切加载集合和生成的SQL是正确的。 这些课程的流利映射是: public class OptionIdentifierMap : ClassMap { public OptionIdentifierMap() : base(“OptionIdentifier”) { //Id Mapping Removed HasMany(x => x.OptionPrices) .KeyColumn(“OptionIdentifier_id”) .Cascade.None(); } } public class OptionPriceMap : ClassMap { public OptionPriceMap() : base(“OptionPrice”) { //Id Mapping removed References(x => x.Option) .Column(“OptionIdentifier_id”) .Cascade.None() .ForeignKey(“FK_OptionPrice_OptionIdentifier_id_OptionIdentifier_Id”) .Not.Nullable(); References(x => x.Increment) .Column(“PricingIncrement_id”) .Cascade.None() .ForeignKey(“FK_OptionPrice_PricingIncrement_id_PricingIncrement_Id”) .Not.Nullable(); Map(x => x.Price).Not.Nullable(); } […]

对Nhibernate进行SQL查询

如何将此SQL查询提供给Nhibernate? SELECT Customer.name FROM Company INNER JOIN Customer ON Company.CompanyId = Customer.CompanyId where CompanyId = 2

通过集合获取Paginated实体

考虑两个实体具有one-to-many收集Vehicles public class Person { public IList Vehicles { get; set;} } public class Vehicle { public string Name { get; set;} public Person Owner { get; set; } } 我显示一个有车辆的人员网格,并显示网格中第一辆车的名称。 网格是分页的。 我使用以下标准来获取数据 我有一个加载网格视图数据的标准 var criteria = DetachedCriteria.For() .CreateAlias(“Vehicles”,”vehicle”, JoinType.InnerJoin) .SetResultTransformer(new DistinctRootEntityResultTransformer()) .SetMaxResults(pageSize) .SetFirstResult((page – 1) * pageSize) criteria.Add(Restrictions.Eq(“vehicle.Name”, “super”)); 其中page和pageSize是计算位。 问题是因为最大结果和第一个结果是在数据库中计算的,并且不同的根在外部完成,行数不匹配。 有没有办法解决这个问题?

流畅的NHibernate – ProjectionList – ICriteria返回空值

我是NHibernate的新手,但我已经google了一下,并没有找到任何帮助解决这个问题。 我希望你们能! ;)我正在更改属性和方法的名称,因为此代码是公司的属性,但基本上这是我需要一些帮助。 我有以下情况: 我的域名实体: public class Structure { public virtual int Id { get; set; } public virtual string Name { get; set; } public virtual Person Manager { get; set; } //I need to fill here. //and others } 我的地图类: public class MapStructure : ClassMap { public MapStructure() { Table(“TB_Structure”); Id(x => x.Id).Column(“Id”).GeneratedBy.Identity(); […]

通过nHibernate Criterion使用SQL CONVERT函数

我有一个sql视图,其中每列的数据类型是string ,用于jquery datatables插件。 其中一列包含英国格式日期dd / mm / yyyy。 此列需要保留一个字符串才能使用插件的击键过滤,但是对于排序,需要将其视为日期。 我使用nhibernate标准来创建sql查询,我想生成以下order by子句,因为这正确地命令日期 order by CONVERT (datetime, DateOfBirth, 103) 但是在Nhibernate.Criterion.Projections中没有Convert方法。 有Cast ,但由于它是英国日期格式,我收到以下错误: The conversion of a varchar data type to a datetime data type resulted in an out-of-range value 我试过也试过以下: criteria.AddOrder( Order.Desc( Projections.SqlFunction( “CONVERT”, NHibernateUtil.DateTime, new IProjection[] { Projections.Property(propNames[orderByColumn]), Projections.Property(“104”) } ) ) ); 但是我收到以下错误消息: NHibernate.HibernateException: Current […]

NHibernate AliasToBean转换器关联

我正在尝试使用以下语句来获取具有我所追求的字段的实体: retVal = session.CreateCriteria(typeof(MyEntity)) .CreateAlias(“MyEntityProperty”, “MyEntityProperty”) .Add(Restrictions.Eq(“MyEntityProperty.Year”, year)) .SetProjection( Projections.Distinct( Projections.ProjectionList() .Add(Projections.Property(“Property1”), “Property1”) .Add(Projections.Property(“Property2”), “Property2”) .Add(Projections.Property(“MyEntityProperty.RegisteredUser”), “MyEntityProperty.RegisteredUser”) .Add(Projections.Property(“MyEntityProperty.CompanyInfo”), “MyEntityProperty.CompanyInfo”) ) ) .SetResultTransformer(Transformers.AliasToBean(typeof(MyEntity))) .List() .Cast(); MyEntity是我想要返回的实体,MyEntityProperty是MyEntity的一个属性,它是另一个实体(MyEntityProperty类型)。 我得到的错误是Could not find a setter for property ‘MyEntityProperty.RegisteredUser’ in class ‘MyEntity’ AliasToBean转换器是否无法处理子实体? 或者还有什么我需要做的才能让它发挥作用?