草庐IT

nhibernate-projections

全部标签

c# project-wide 使用别名指令

C#有一个叫做Usingaliasdirectives的特性.他们允许你做一个像这样的类型的别名:usingCustomerId=MyComp.MyProject.Core.EntityKey;然而,此功能仅适用于每个文件。我正在寻找一种方式-任何方式-在整个项目甚至整个解决方案范围内执行此操作。我想这样做的原因是因为我想删除像EntityKey这样的文字的冗长,EntityKey等。我喜欢避免在每个文件中定义这些别名。EntityKey是struct,所以我无法创建派生类。 最佳答案 不,那不存在。别名严格针对每个文件。

c# - 等于 NHibernate 实体的实现,unproxy 问题

在NHibernate3.0Cookbook中,有一个基本实体类型的示例实现。equals是这样实现的:publicabstractclassEntity{publicvirtualTIdId{get;protectedset;}publicoverrideboolEquals(objectobj){returnEquals(objasEntity);}privatestaticboolIsTransient(Entityobj){returnobj!=null&&Equals(obj.Id,default(TId));}privateTypeGetUnproxiedType(){re

c# - NHibernate 一对一映射

我是NHibernate的新手,所以到目前为止对映射等的了解有限,我刚刚遇到了一个需要帮助的场景。我有2个表:评论标记评论我有2个类,如下所示(为简洁起见,我排除了不重要的属性):回顾publicvirtualintReviewId{get;set;}publicvirtualTaggedReviewTaggedReview{get;set;}publicvirtualstringTitle{get;set;}publicvirtualstringDescrip{get;set;}标签评论publicvirtualintReviewId{get;set;}publicvirtualRe

c# - nHibernate session 和多线程

我有一个方法有很多使用nHibernatesession的持久性调用,它有效,没问题。但出于多线程原因,我需要重构此方法,从循环内的内容中提取方法。然后我用这个方法创建了一个类。这就像一个正常的重构,但是这个方法调用中的nHibernatesession被破坏了,没有上下文,我没有在任何时候完成它。nHibernate是否存在多线程问题?即使我只执行一个线程,我也会遇到同样的问题。我通过SessionFactory和Façade模式使用nHibernateSession,这意味着,session不是这些对象的字段,它在SessionFactory中是全局的。让它更清晰一点:之前:Met

c# - 你如何让 NHibernate 忽略 POCO 中的属性

我们有POCO,比如:publicclassPerson{publicGuidPersonID{get;set;}publicstringFirstName{get;set;}publicstringLastName{get;set;}publicDateTimeDateOfBirth{get;set;}publicstringVersion{get;set;}}而对应的hbm文件为如果仔细观察,我们有一个Version属性,数据库中没有对应的列?我们只是想让nHibernate忽略这个属性,这就是我们没有把这个属性放在映射文件中的原因。但是它开始抛出错误。有办法解决这个问题吗?

c# - 记录 NHibernate SQL 查询

有没有办法在我的代码中访问完整的SQL查询,包括值?我能够使用log4net记录SQL查询:但是,我也想找到一种方法来从代码中记录SQL查询。这样,我将在我的try/catch语句中记录导致异常的特定SQL查询。现在我必须对SQLFileLog进行数据挖掘,以在发生异常时找到导致异常的查询,但效率不高。 最佳答案 你可以使用拦截器来做到这一点:publicclassLoggingInterceptor:EmptyInterceptor{publicoverrideSqlStringOnPrepareStatement(SqlStri

c# - NHibernate 无状态 session 的插入很慢

这几天我一直致力于改进NHibernateInsert性能。我在很多帖子(例如thisone)中读到,statelesssession可以每秒插入1000~2000条记录....然而,它可以插入1243条记录的最佳时间对我来说超过9秒:varsessionFactory=newNHibernateConfiguration().CreateSessionFactory();using(IStatelessSessionstatelessSession=sessionFactory.OpenStatelessSession()){statelessSession.SetBatchSize

c# - Fluent NHibernate 生成和分配的 ID 列

我在Web应用程序中使用FluentNHibernate进行数据持久化。我的问题...我有一个基类,它使用GeneratedBy().Identity()映射所有具有T类型ID属性(几乎总是int或GUID)的实体在应用程序启动时,我有一个Bootstrap来检查和验证所需的种子数据是否已填充。我的问题是,一些填充的种子数据需要一个特定的ID。(对应于枚举或系统用户的ID)有什么方法可以强制NHibernate使用我指定的ID提交记录,而不是使用自动生成的ID?此后对存储库的任何其他提交都可以自动生成。 最佳答案 Id(x=>x.I

c# - 如何使用 Nhibernate 删除多个数据库实体?

这个问题的最佳实践是什么?是否有任何内置的批处理功能?示例代码:using(ITransactiontransaction=_session.BeginTransaction()){_session.Delete("FROMmyObjectoWHEREo.Id=IN(1,2,...99999)");transaction.Commit();}提前致谢。 最佳答案 HQL支持IN子句,如果你使用setParameterList,你甚至可以传入一个集合。varidList=newList(){5,3,6,7};_session.Crea

c# - NHibernate 异常 : Transaction not connected, 或已断开连接

在我们的开发环境中,所有ASP.NET应用程序都运行良好。但是,当我在测试机器上部署站点时,在某些页面上出现此异常:NHibernate.TransactionException:Transactionnotconnected,orwasdisconnectedatNHibernate.Transaction.AdoTransaction.CheckNotZombied()ind:\CSharp\NH\NH\nhibernate\src\NHibernate\Transaction\AdoTransaction.cs:line406atNHibernate.Transaction.Ad