Tag: nhibernate

无法转换’NHibernate.Collection.Generic.PersistentGenericBag’类型的对象

public List FindAll() { using (ISession NSession = SessionProvider.GetSession()) { ICriteria CriteriaQuery = NSession.CreateCriteria(typeof(Application)); return (List) CriteriaQuery.List(); } } 我得到一个exception,其中应用程序类如下: public class Application { private string _name; private Developer _developer; private int _id; private List _bugs; public Application() { } public virtual int ApplicationId { get { return _id; } set { _id = value; […]

为什么我会在NHibernate会话之上使用工作单元模式?

我什么时候会在NHibernate已经提供的东西上编写UoW实现? 有真实世界的例子吗?

在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。 谢谢

C#generics – 可以用n个generics类型创建一个方法..?

我不认为这是可能的,但是这里…… 我想添加可以处理generics的数字的方法。 例如 : bool MyMethod() where T: Isomething { } 将适用于一种类型 bool MyMethod() where T: Isomething { } 将适用于两种类型 有没有办法处理n种类型 – 例如 bool MyMethod() where T: Isomething { } 我想这样做的原因是实现一个静态的nhibernate辅助方法,它可以从多个程序集加载 – 现在它适用于一个程序集。 我目前的方法如下所示: public static ISessionFactory GetMySqlSessionFactory(string connectionString, bool BuildSchema) { //configuring is meant to be costly so just do it once for each […]

流畅的NHibernate – HasMany复合键

如何在没有外键和列名不同的旧数据库上创建HasMany关系? 我知道如何使用References在HeaderVersion上创建一对一的关系,但不知道如何从Header 1到* HeaderVersion创建HasMany。 加入条件应该是: Header.Id1 = HeaderVersion.PId1 AND Header.Id2 = HeaderVersion.PId2 型号http://sofzh.miximages.com/c%23/30xbfo5.png 域: public class Header { public virtual int Id1 { get; set; } public virtual int Id2 { get; set; } public virtual string Something { get; set; } } public class HeaderVersion { public virtual int PId1 { get; set; } […]

为什么NHibernate抛出“StaleObjectStateException”?

我正在编写项目并使用NHibernate 3.1 SimpleTest的: Forum forum = Session.CreateCriteria().Add(Restrictions.Eq(“UrlName”, “reportabug”)).UniqueResult(); forum.TopicsCount++; IForumRepository forumRepository = new ForumRepository(SessionFactory); forumRepository.Update(forum); public virtual void Update(TEntity entity) { if (!session.Transaction.IsActive) { TResult result; using (var tx = session.BeginTransaction()) { session.SaveOrUpdate(entity) tx.Commit(); } return result; } session.SaveOrUpdate(entity) } 上次更新抛出exception: StaleObjectStateException was unhandled by user code: Row was updated or deleted by another transaction […]

nhibernate不会级联删除子项

方案如下, 我有3个对象(我简化名称)名为Parent,parent的child和child的孩子 父母的孩子是父母的集合,孩子的孩子是孩子的集合。 映射如下(相关部分) 亲 父母的孩子 我想要实现的是,当我删除父母时,会有一个级联删除一直到孩子的孩子。 但目前发生的是这个。 (这纯粹用于映射测试目的)获取父实体(工作正常) IQuery query = session.CreateQuery(“from Parent where ID =” + ID); IParent doc = query.UniqueResult(); 现在删除部分 session.Delete(doc); transaction.Commit(); 在使用级联和反向解决了“无法插入空值”错误之后,我希望现在可以使用此代码删除所有内容,但只删除父项。 我错过了可能错过的映射中的某些内容吗? 任何正确方向的提示都非常受欢迎! 迭戈,谢谢你的回答。 (和解释) 我去除了on-delete=”cascade” ,这是因为我喜欢在代码中尽可能多地控制而不是在数据库中。 下面发布的代码是(工作)结果。 亲 父母的孩子 希望这可以帮助人们解决同样的问题!

无法删除集合:

我有两个表,tableA和tableB。 tableA有列:tabAId,col2,col3 (tabAId primaryKey和Identity列。) tableB有列:tabAId,name (tabAId不为null) 我在tableA的hbm文件中创建了Bag,以维护关系。 当我尝试更新tableA中的记录时,它抛出exception,因为我在tableA实例中有子列表。 [NHibernate.Exceptions.GenericADOException] = {“无法删除集合:[MIHR.Entities.tableA.tableB#21] [SQL:UPDATE dbo.tableB SET tabAId = null WHERE tabAId = @ p0]”} InnerException = {“无法将值NULL插入列’tabAId’,表’SA_MIHR_DEV.dbo.tableB’;列不允许空值.UPDATE失败。\ r \ n语句已终止。”}

‘string’不包含’Contains’的定义

我有这样的声明: var vals = from StandAloneUserPayment saup in _Session.Query() .Fetch(x => x.RecurringPayments) where saup.User.UserId == userId && searchString.Contains(saup.FriendlyName, StringComparer.InvariantCultureIgnoreCase) select saup; 这似乎正是我应该做的,但我得到了Contains以下消息的Contains方法的整行: string不包含Contains的定义和最佳扩展方法重载System.Linq.ParallelEnumerable.Contains(System.Linq.ParallelQuery, TSource, System.Collections.Generic.IEqualityComparer)有一些无效参数 我究竟做错了什么?

NHibernate Session.Evict()

我无法在我面前访问代码,所以我只是想知道是否有人可以帮我解决Session.Evict()问题。 假设我有一个带有子集合地址的Person对象。 我从会话中填充Person对象并延迟加载Addresses集合。 然后我调用Session.Evict(personObject)从会话中分离Person对象。 我的问题是,如果我尝试访问Addresses集合,它只会返回null,或者我会得到一个exception,因为NHibernate代理无法找到关联的会话?