草庐IT

fluent-nhibernate-mapping

全部标签

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# - Fluent Assertions 能否对 IEnumerable<string> 使用不区分字符串的比较?

我有一对列表,我正在尝试使用FluentAssertions进行比较。我可以很容易地编写比较代码,但我想使用FluentAssertions,这样我就可以获得在测试失败消息中显示的原因。到目前为止,我所看到的一切似乎都在使用默认的Object.Equals比较,它区分大小写。我似乎无法将IComparer传递给Equal或Contains方法,还有其他方法吗?[TestMethod()]publicvoidfoo(){varactual=newList{"ONE","TWO","THREE","FOUR"};varexpected=newList{"One","Two","Three"

c# - 使用 Entity Framework Fluent 语法或内联语法编写递归 CTE

我不熟悉SQL和EntityFramework(ADO.NET实体映射)中的这种递归。我正在处理评论管理,其中有一个Comments表,该表包含列NewsID、CommentID、ParentCommentID、IndentLevel、CreatedTime。我正在尝试获取特定新闻项的评论列表,其中所有评论都是根据父项下的子项和创建时间排列的,如下所示:CommentID|time|ParentCommentIDGuid1|t1|nullGuid4|t4|Guid1Guid2|t2|nullGuid3|t3|Guid2必须优先考虑子父关系,然后是创建时间。到目前为止我学到的是(来自互联

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

c# - 将 CreateMap 和 Map 的实例版本与 WCF 服务一起使用?

automapper遇到了一些实际问题。我想我已经找到了解决方案,但不确定如何实现。基本上,我使用带有ResolveUsing和ConstructedBy的自定义映射将参数传递给构造函数,我知道大多数人只在global.asax中设置了一次就忘记了它。但问题是我的方法(在wcf上)将不同的参数传递给ResolveUsing的构造函数......在我使用静态方法Mapper.CreateMap和Mapper.Map之前,当不同的请求通过方法(多用户)进入wcf服务时,它们似乎相互冲突。阅读一些内容后,我似乎可以使用CreateMap和Map的实例版本,这样每个单独的请愿书都可以获得自己的