Tag: nhibernate

流畅的NHibernate,关于代码设计的问题

Greeetings,我是Fluent NHibernate的新手。 让我们想象一下,有很多课程 ClassA的 ClassB的 ClassC … 创建模式后,我想获得一个创建表的列表。 例如: 打开表单 – >有一个表的名称,当我们点击每个表时,我们从这个表中获取记录。 我怎样才能做到这一点? 有更便宜的方式吗? 有可能没有反思吗? (解析所有课程,并获得它的名字)

使用分区鉴别器列映射分区表

我有一个遗留的Oracle 10g数据库。 此数据库有一个表ITEMDELIVERY ,其ITEMDELIVERY DELIVERY_DATE 。 该表由此列分区。 因此,此表的主键是包含ITEMDELIVERY_ID和DELIVERY_DATE列的复合键。 还有另一个表ITEMDELIVERYDETAIL它有一个FK到ITEMDELIVERY 。 为了能够从分区中受益并且能够自己进行分区,该表有一个PARTITION_DATE列。 ITEMDELIVERY_ID和PARTITION_DATE形成FK到ITEMDELIVERY 。 PARTITION_DATE在ITEMDELIVERYDETAIL没有商业含义,只是出于技术原因。 因此,我想避免在我的实体中指定此列。 我在IAutoMappingOverride的实现中尝试了以下内容: mapping.Map(x => x.ItemDelivery.DeliveryDate).Column(“PARTITION_DATE”); 但这不起作用,我得到以下exception: NHibernate.PropertyNotFoundException:在“Domain.ItemDeliveryDetail”类中找不到属性“DeliveryDate”的getter 有没有办法实现我的目标?

NHibernate分页性能(更好的选择)

在那个简单的案例中: public class Person { public int Id {get;set;} public int Name {get;set;} } 我需要生成一个带分页和排序的网格 我的数据库有大约10万人 什么选项有更好的表现: 1)第一次获取所有元素并在利用NHibernate First Level Cache之后,例如: personRep.FindAll().OrderBy(s =>s.Name).AsPagination(pageNumber,pageSize); Obs。:AsPagination是一种扩展方法…… 2)从数据库中只获取实际页面,例如: public virtual IList GetPaginedList(int __pageIndex, int __pageSize,out int __total) { var _rowCount = Session.CreateCriteria(typeof(T)) .SetProjection(Projections.RowCount()).FutureValue(); var _results = Session.CreateCriteria(typeof(T)) .SetFirstResult(__pageIndex * __pageSize) .SetMaxResults(__pageSize) .Future(); __total = _rowCount.Value; return _results; }

Nhibernate事务锁定了一个表格

我开发了一个使用nHibernate的WCF api。 我是新来的。 我使用session.update来处理事务。 我有一个for循环,其中基于选择条件我正在更新记录即。 如果tabel1中存在A,那么我正在更新表,否则插入新条目。 我收到“无法执行查询”。 尝试通过在表中添加新条目来对先前正在更新的表执行选择查询时。 我的想法是,因为我使用session.save(table1),然后尝试从该表中选择条目,我收到一个错误。 由于session.save临时锁定表,我无法在该表上执行select查询。 对此有什么解决方案? 更新 :这个for循环我用来检查数据库中的某些字段: using (ITransaction tranx = session.BeginTransaction()) { savefunction(); tranx.Commit(); } 保存function: public void savefunction() { for (int i = 0; i < dictionary.Count; i++) { ICandidateAttachmentManager candidateAttach = new ManagerFactory().GetCandidateAttachmentManager(); CandidateAttachment attach = new CandidateAttachment(); attach = checkCV(); if(attach == null) { //insert […]

NHibernate,映射一个集合,其中键可以是两个不同的列

有一个实体A. 此外,还有一个实体B ,它与A有两个关联。 A有一个B的集合。 如果关联的A之一是加载的A的父级,则此集合必须加载任何B. 问题是A上的集合映射必须基于检查两个A关联中的一个是否是父关联来过滤子项。 我怎样才能做到这一点? 注意:顺序无关紧要,因此您可以使用bag建议一些映射。 注意2:请建议如何使用XML映射实现这一点,我不会在代码中执行此操作。 更新:真实场景: 这是关于友谊实施的全部内容。 我想在实体UserProfile中映射友谊的集合。 友谊有两个表示关系的关联:OneUser,OtherUser。 如果我想让所有朋友都能找到我,我需要检查这两个属性,因为如果其中一个属性是我自己,那么我的朋友就是我的朋友。

nHibernate批量大小不起作用

我在nHibernate中遇到了批量大小的问题(C# – VS 2012)。 我在集合和配置中设置了“batch-size”,但它不起作用。 using (var s = OpenSession()) { using (var t = s.BeginTransaction()) { Parent parent = s.CreateCriteria(typeof(Parent)).List().First(); Console.Write(parent.Children[0]); t.Commit(); } } nHibernate profiler显示它一次性占用所有孩子(例如1000个孩子),但它应该只需要5个孩子。 Parent.hbm.xml: Child.hbm.xml: 的hibernate.cfg.xml NHibernate.Driver.SqlClientDriver Server=.;initial catalog=Lista6;Integrated Security=SSPI 5 true NHibernate.Dialect.MsSql2008Dialect 60 true 1, false 0, yes ‘Y’, no ‘N’ true 你有什么想法为什么批量大小不起作用?

具有Queryover的动态Where条件

我有一个应用程序,我正在尝试实现DDD概念。 我的存储库类有一些列出实体的方法。 我想知道如何使用QueryOver进行查询以使用AND运算符过滤分离,当参数填充时,sample public IEnumerable FindProducts(string name, decimal? price, DateTime? validDate, int? stock, int? idSupplier) { var query = Session.QueryOver().OrderBy(x => x.Name).Asc; if (!string.IsNullOrEmpty(name)) // add where condition for name parameter if (price.HasValue) // add ‘AND’ where condition for price parameter if (validDate.HasValue) // add ‘AND’ where condition for validDate parameter if (idSupplier.HasValue) // add […]

NHibernate – 将长字符串设置为查询参数

我正在构建一个这样的查询: private void Test() { ISession session = sessionFactory.OpenSession(); var query = session.GetNamedQuery(“testQuery”); string s = BuildVeryLongString(); // length more that 4000 chracters query.SetParameter(“Param”, s, NHibernateUtil.String); query .SetResultTransformer(new AliasToBeanResultTransformer(type)) .List(); } 在DB-profiler中,我可以看到Param的类型是nvarchar(4000)是不够的。 有没有办法说NHibernate,我将使用更长的字符串? PS DB是MSSQL 2005。 提前致谢!

数据库连接期间Nhibernate空引用exception

当我的程序开始连接到Windows XP上的MS SQL 2005 EXPRESS DB时,我有时会收到此exception。 有时我得到这个错误,有时不… NHibernate v3 DBMonitor类在单独的线程上运行,但只在一个上运行,未来可以运行多个。 我有类似的SessionProviderMsSql2005类,但仅用于SQLite连接,它有相同的问题和sqlite的会话提供程序在多个线程上运行… System.NullReferenceException: Object reference not set to an instance of an object. at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add) at System.Collections.Generic.Dictionary`2.set_Item(TKey key, TValue value) at NHibernate.Impl.SessionFactoryObjectFactory.AddInstance(String uid, String name, ISessionFactory instance, IDictionary`2 properties) at NHibernate.Impl.SessionFactoryImpl..ctor(Configuration cfg, IMapping mapping, Settings settings, EventListeners listeners) at NHibernate.Cfg.Configuration.BuildSessionFactory() at […]

NHibernate:空列上的属性的默认值

我正在使用其他应用程序使用的旧数据库,因此我无法修改其结构。 有时我有可以为空的列,我想要映射为非可空类型。 例如,我在数据库上有一个可空的EndValidity列,我希望在不可为空的DateTime上映射,如果为null,它应该是DateTime.MaxValue,或者作为一个更简单的例子,如果为null则必须为false的可空位列。 我正在考虑为它编写一个自定义用户类型(如果可能的话,带参数),还是nHibernate中包含了什么? 如果唯一的解决方案是编写自定义的usertype,对于布尔情况,我是否可以覆盖fluentnhibernate约定以始终将该usertype应用于布尔值?