使用nHibernate,如何阅读未限制的内容?
使用nhibernate,如何将事务级别设置为读取未提交使用nHibernate,如何阅读未限制的内容?,nhibernate,Nhibernate,使用nhibernate,如何将事务级别设置为读取未提交 使用SQL,我通常在存储过程开始时设置事务级别,或者使用内联(NOLOCK)。您可以通过hibernate.connection.isolation进行设置。如果您需要更精确的控制,请查看NHibernate的机制。您可以通过以下步骤将nolock与NHibernate联机使用SQLs: 使用以下命令创建HBM文件 <sql-query name="PersonList"> return alias="person" cla
使用SQL,我通常在存储过程开始时设置事务级别,或者使用内联(NOLOCK)。您可以通过
hibernate.connection.isolation
进行设置。如果您需要更精确的控制,请查看NHibernate的机制。您可以通过以下步骤将nolock
与NHibernate联机使用SQLs:
<sql-query name="PersonList">
return alias="person" class="Person">
SELECT * FROM Person WITH(nolock)
<sql-query>
return alias=“person”class=“person”>
从具有(nolock)的人员中选择*
AddXmlFile(hbm文件路径)
DBSession.GetNamedQuery(“PersonList”)
获取人员列表与RDBMS直接对话。无论你在做什么,read uncommitted都是在自找麻烦。我从来没见过使用这个的真正理由。实际上禁用事务隔离的应用程序没有正确使用事务。这有点像dba神话。这是一种设计选择,就像所有的设计选择一样,应该基于您所经营的领域。对于基本的中小型网络项目和客户端应用程序(我想这是绝大多数民间工作的地方),这可能是正确的做法。决策是成本与风险,在实时环境中,运行无事务脏读几乎是常态。大型电子商务网站(如ebay)也将与RT应用分享许多设计决策,交易水平如此之高,使用它们的风险太大。回滚的代价将使您瘫痪。Martin Fowler在这里对此发表了评论:这是我使用SQL拦截器的解决方案。
IDbCommand NHCommand;
NHCommand= NHSession.Connection.CreateCommand();
NHCommand.CommandText= "SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED";
NHCommand.ExecuteNonQuery();