Tag: nhibernate

NHibernate与Firebird ……是否启用了这些function?

我们正在使用NHibernate在Firebird后端取得巨大成功。 我的问题与Firebird支持的NHibernate中可用的function有关。 如果您对Firebird和NHibernate有任何专业知识,欢迎您提出意见。 Firebird是否支持“未来”查询? 从我的阅读中可以看出,Firebird是少数几个不支持此function的数据库之一。 有没有人有一个解决方法,因为“未来”将是一个很好的function来利用。 Firebird是否支持NHibernatefunction“prepare_sql”。 出于某种原因,我不能让它在Firebird中工作,并不断收到关于参数大小不相等的警告(在Nhibernate Profiler中)。 Firebird是否支持批处理? 在NHibernate映射中,我们指定批处理但是在分析器中看不到任何这种证据。 对于那些感兴趣的人,我们使用Fluent NHibernate来配置NHibernate。 一切运作良好,我们对ORM有很大的控制权,但只需要澄清上述内容。 你的意见?

参数索引超出范围

尝试使用nhibernate更新对象时出现以下错误。 我试图更新一个外键字段。 有什么想法我可能会收到这个错误? 我无法弄清楚该错误,我的log4net日志也没有提供任何提示。 谢谢 System.IndexOutOfRangeException was unhandled by user code Message=”Parameter index is out of range.” Source=”MySql.Data” StackTrace: at MySql.Data.MySqlClient.MySqlParameterCollection.CheckIndex(Int32 index) at MySql.Data.MySqlClient.MySqlParameterCollection.GetParameter(Int32 index) at System.Data.Common.DbParameterCollection.System.Collections.IList.get_Item(Int32 index) at NHibernate.Type.Int32Type.Set(IDbCommand rs, Object value, Int32 index) at NHibernate.Type.NullableType.NullSafeSet(IDbCommand cmd, Object value, Int32 index) at NHibernate.Type.NullableType.NullSafeSet(IDbCommand st, Object value, Int32 index, ISessionImplementor session) at NHibernate.Persister.Entity.AbstractEntityPersister.Dehydrate(Object id, Object[] […]

NHibernate复合键与复合唯一约束

当使用NHibernate时,如果我有一个具有唯一约束的实体并且可以通过该约束唯一地标识,那么将约束表示为复合键还是具有单独的Id字段并具有复合唯一约束更好? 我一直在读,如果它可以帮助使用NHibernate复合键被认为是“坏”,并且只应在使用旧数据库时使用。 将设置映像如下: class Book { public virtual int Id { get; protected set; } public virtual string Author { get; set; } public virtual IList Editions { get; set; } //HasMany (one to many) } class BookEdition { public virtual string Title { get; set; } public virtual string Language { get; set; } […]

Nhibernate – 无法找到属性的吸气剂

我正在尝试构建MusicStore Nhibernate端口,我遇到了这个错误: 在’MvcMusicStore.Models.OrderDetail’类中找不到属性’OrderInfo’的getter 具有以下内部exception: NHibernate.PropertyNotFoundException:找不到类’MvcMusicStore.Models.OrderDetail’中属性’OrderInfo’的getter 使用OrderDetail的以下映射时: 和C#类定义: using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace MvcMusicStore.Models { public class OrderDetail : Entity { public virtual OrderInfo Order { get; set; } public virtual Album Album { get; set; } public virtual int Quantity { get; set; } public virtual decimal UnitPrice { get; set; […]

NHibernate:hql到条件查询 – 需要帮助

我有这个hql查询,完美的工作: select m from Media m join m.Productlines p join m.Categories c join m.Spaces sp join m.Solutions so where m.Uid != 0 and p.Uid in (:productlines) and c.Uid in (13) and sp.Uid in (52) and so.Uid in (15,18) group by m.Uid 但现在它需要参数化/制作动态,不仅是参数,还有连接(可以只从Media中选择,没有任何连接,因此在这种情况下不需要* .Uid)。 我不想乱用一个StringBuilder实例并以这种方式构建hql查询,我宁愿使用Criteria API,但我不能得到一个 SELECT m.* …. GROUP BY m.Uid 查询以使用Criteria。 如果我添加一个 Projections.GroupProperty(“Uid”) 我的查询,nhibernate选择 […]

Nhibernate QueryOver嵌套属性

是否有一种简单的方法可以将QueryOver与嵌套属性一起使用? 例如,我尝试这样的事情; // SPLAT! session.QueryOver().Where(Expression.Eq(“HomeBase.Name”, “Bat Cave”); 它无法工作,因为它无法解析SuperHero的属性’homebase.name’。 这是有道理的,但显然有一些方法可以使这项工作,因为如果我使用较旧的’查询’方法,我可以让它工作得很好,即 // The results I (technically) want. sess.Query().Where(x => x.HomeBase.Name == “The Bat Cave”); 那么我错过了什么? 我猜有一些方法可以将表达式等组合在一起,以使得nexted属性与QueryOver一起使用,但它们是什么?

如何序列化NHibernate DetachedCriteria对象?

我正在寻找一个解决方案来将NHibernate DetachedCriteria对象持久化到数据库。 我已经跟踪了NHibernateUtil和GetSerializable方法,但我不确定如何使用它来序列化DetachedCriteria对象。 任何有关这方面的帮助将不胜感激。 谢谢。

NHibernate父映射不会创建子外键

我刚学习NHibernate。 我一直在使用文档中的示例和stackoverflow,但我必须遗漏一些东西。 我有一个PARENT对象,它有一个CHILD集合。 没有PARENT,CHILD没有意义,因此数据库的FK设置为​​NOT NULL。 从CHILD到PARENT实现NHibernate工作正常,但我不需要这种关系方向。 相反,我试图实现拥有该关系的PARENT,但我一直得到一个数据库错误冒泡“无法将值NULL插入PARENT_ID”。 保存时,父母的ID和实体都不存储在CHILD中。 请参阅下面的代码示例。 请指教。 类文件 public class PARENT { private readonly IList _children = new List(); public virtual Id { get; set; } public virtual void AddChild(CHILD child) { _children.add(child); } } public class CHILD { public virtual Id { get; set; } } 映射

使用Autofac进行Session-per-HttpRequest。 当不通过DependencyResolver访问ISession时,NHProf显示“多会话”警告

我已经使用Autofac成功实现了Session-per-HttpRequest。 我对我的实现不满意,因为我正在通过DependencyResolver而不依赖于AutoFac提供的参数。 如果我依赖AutoFac提供的ISession参数,那么我会收到NHProf的警告,表明正在使用多个Sessions。 如果我通过DependencyResolver ,NHProf的警告会消失,但使用方法对我来说不正确。 我遵循了此处概述的Autofac + MVC4.0指南: https : //code.google.com/p/autofac/wiki/MvcIntegration 我也使用本指南作为参考。 它表明应该可以接受ISession作为构造函数参数: http : //slynetblog.blogspot.com/2011/04/lightweight-nhibernate-and-aspnet-mvc.html 以下是我构建Autofac容器的方法: public class AutofacRegistrations { public static void RegisterAndSetResolver() { var containerBuilder = new ContainerBuilder(); containerBuilder.RegisterControllers(Assembly.GetExecutingAssembly()); // Only generate one SessionFactory ever because it is expensive. containerBuilder.Register(x => new NHibernateConfiguration().Configure().BuildSessionFactory()).SingleInstance(); // Everything else wants an instance of Session per […]

NHibernate:在连接表上映射连接

我有一个视图将3个表连接在一起,我需要用NHibernate映射替换,而不需要对数据库进行任何更改。 这可能吗? 这是我的观点的简化示例: SELECT tblTable1.*,tblTable2.*,tblTable3.MyProperty FROM tblTable1 OUTER JOIN tblTable2 ON tblTable1.Table1Key = tblTable2.Table1Key OUTER JOIN tblTable3 ON tblTable2.Table2Key = tblTable3.Table2Key 基本上我们选择tblTable1并加入tblTable2这对我来说在NHibernate中起作用。 我的问题是tblTable3。 如何在联接表tblTable2的属性上加入它? 当我像这样进行映射时,由于某种原因,我得到一个试图在Table1Key上加入tblTable3的查询。