Tag: nhibernate

NHibernate:如何设置连接超时

在NHibernate连接失败(连接超时)之前,有没有办法全局设置等待连接到给定数据库的时间? 在ADO.NET中,您可以为这样的单个连接执行此操作: new SqlConnection().ConnectionTimeout = 10; 我发现如何在命令执行失败之前设置等待结果集的时间(命令超时)。 但是,显然,这不是我需要的

NHibernate IQueryable集合作为root的属性

我有一个根对象,其属性是一个集合。 例如: I have a Shelf object that has Books. // Now public class Shelf { public ICollection Books {get; set;} } // Want public class Shelf { public IQueryable Books {get;set;} } 我想要完成的是返回一个IQueryable的集合,这样我就可以直接从父节点运行分页和过滤集合。 var shelf = shelfRepository.Get(1); var filtered = from book in shelf.Books where book.Name == “The Great Gatsby” select book; 我希望NHibernate专门执行该查询,而不是全部加载整个集合然后在内存中解析它(这是当我使用ICollection时当前发生的事情)。 这背后的原因是我的collections可能是巨大的,成千上万的记录,并且所有查询都可以打击我的数据库。 […]

如何在NHibernate中映射图像类型?

我在我的SQL Server 2000数据库中有一个类型为Image的列。 我怎样才能将它映射到NHibernate?

NHibernate映射与中间表的一对多关系

如何在没有中间class PostTag创建的情况下定义映射? 我有三张桌子 t_post(id…) t_tag(id, name) t_post_tag(id,post_id, tag_id) 我希望在Post类型中有一个带有Tags的集合: class Post { public virtual IEnumerable Tags{ get; set; } } public class Tag { } 映射: …

映射接口或抽象类组件

请考虑以下简单用例: public class Foo { public virtual int Id { get; protected set; } public virtual IBar Bar { get; set; } } public interface IBar { string Text { get; set; } } public class Bar : IBar { public virtual string Text { get; set; } } 和流畅的nhibernate地图类: public class FooMap : ClassMap […]

NHibernate – not-null属性引用null或transient值

我收到此exception(底部的完全例外): NHibernate.PropertyValueException was unhandled by user code Message=”not-null property references a null or transient valueClearwave.Models.Encounters.Insurance.Patient” Source=”NHibernate” EntityName=”Clearwave.Models.Encounters.Insurance” PropertyName=”Patient” 我已经做了很多谷歌搜索,似乎这个错误最常见的原因是当一个关联是双向的,但只设置了一半。 如:保险。患者=患者被叫,但是Patient.Insurances.Add(保险)不是。 事实上,我确实有这样的场景但我在调用Save之前检查了对象,并且Insurance.Patient和Patient.Insurances [0]都是正确的对象。 此exception似乎引用的另一种可能性是瞬态值。 在我的情况下, 每个对象都是暂时的,所以我怀疑问题的根源在这里。 但是,现在一切都需要暂时,因为还没有保存。 我希望NHibernate能够持久存在而不是抱怨它们不会被持久存在。 以下是我映射的一些片段(流利): public PatientMap() { WithTable(“tPatient”); Id(x => x.Id, “uid_Patient”).GeneratedBy.GuidComb ().Access.AsReadOnlyPropertyThroughCamelCaseField(); HasMany(x => x.Insurances).WithKeyColumn(“uid_Patient”) .Cascade.All() .Inverse(); … } public InsuranceMap() { WithTable(“tPatientInsuranceInfo”); Id(x => x.Id, “uid_PatientInsuranceInfo”).GeneratedBy.GuidComb ().Access.AsReadOnlyPropertyThroughCamelCaseField(); References(x => […]

multithreading应用程序中SQLite“数据库已锁定”错误

有一个multithreading应用程序,适用于大型DB文件(> 600 Mb)。 当我添加blob数据时,“数据库被锁定”问题就开始了,并且每个请求开始运行> 30 Kb的BLOB数据。 我认为问题与小硬盘速度有关。 它看起来像SQLite删除-journal文件,我的应用程序的一个线程失控(因为-journal文件被应用和删除),而其他我的线程想要与数据库做smth,但SQLite仍然更新DB文件…当然,每次数据库调用后我都可以做一分钟延迟,但这不是解决方案,因为我需要更快的速度。 现在我使用每个会话(每个线程)实现的会话。 因此每个应用程序对象和许多ISession对象都有一个ISessionFactory。 有我的助手类(你可以看到我使用IsolationLevel.Serializable和CurrentSessionContext = ThreadStaticSessionContext): public abstract class nHibernateHelper { private static FluentConfiguration _configuration; private static IPersistenceContext _persistenceContext; static nHibernateHelper() {} private static FluentConfiguration ConfigurePersistenceLayer() { return Fluently.Configure().Database(FluentNHibernate.Cfg.Db.SQLiteConfiguration.Standard.ShowSql().UsingFile(_fileName).IsolationLevel(IsolationLevel.Serializable).MaxFetchDepth(2)). Mappings(m => m.FluentMappings.AddFromAssemblyOf()).CurrentSessionContext(typeof(ThreadStaticSessionContext).FullName); } public static ISession CurrentSession { get { return _persistenceContext.CurrentSession; } } public static IDisposable OpenConnection() […]

如何在我的NHibernate查询中只选择几列?

我有一个类到一个表映射; 不幸的是,这个表有110多列,查询需要很长时间,特别是在大多数时候我只想查看<10列。 我的问题是查询是根据用户想要查看的内容动态生成的。 我无法真正创建不同列的不同映射,因为会有非常多的组合。 我正在使用条件API来生成查询。 我还可以使用它来只选择用户想要的列吗? 还是其他一些方法? 谢谢

使用HqlBasedQuery参数化HQL IN子句?

你如何传递Nhibernate HQL中’in’子句的列表? 例如 // data input from the user interface, not known at compile time object[] productIds = {1, 17, 36, … }; string hqlQuery = @” from Product as prod where prod.Id in ( ? )”; HqlBasedQuery query = new HqlBasedQuery(typeof(Product), hqlQuery, productIds) ActiveRecordMediator.ExecuteQuery(query); 现在,这不会起作用,就像我希望的那样! 我真的坚持做这样的事情: // data input from the user interface, not […]

用NHibernate和PostgreSQL引用列名

我已经开始使用NHibernate 3.0和PostgreSQL进行一个小项目,到目前为止,由于NHibernate站点已关闭,这个过程有点粗糙,我确信这个答案在他们的网站上。 我有一个包含这两列的数据库(当然在实际表中还有更多): int ID String Feature 现在我使用FluentNHibernate进行映射,所以这样的事情: public class MyEntityMap: ClassMap { public MyEntityMap() { Id(x => x.ID); Map(x => x.Feature); } } 和一个LINQ查询来获取数据 var strucs = from str in session.Query() where str.ID < 5 select str; 查询将生成正确的SQL语句。 问题是,因为我的列名中有大写字母,你必须用引号将它们包装起来,但生成的SQL代码看起来像这样: SELECT this_.ID as ID0_0_, this_.feature as feature0_0_, FROM “MyEntity” this_ WHERE this_.ID < 5 列中没有引号。 […]