2009-10-12 124 views
4

我有,做一个简单的方法...NHibernate的CreateSQLQuery交易问题

Session.CreateSQLQuery(syntax).List<T>(); 

的问题是,当我执行这项针对报名的链接服务器连接我碰到下面的错误的存储过程...

该操作无法执行,因为链接服务器“MyLinkedServer”的OLE DB提供程序“MSDASQL”无法启动分布式事务。

我的问题是;我怎么能告诉NHibernate我不想使用一个事务..?

谢谢..!

+0

这是不是NHibernate的,任何/所有查询都在一个事务中运行要么你明确声明它或供应商创建它隐含 – Jaguar 2011-12-16 12:16:46

回答

2

我经常这样做:

session = PersistenceManager.GetCurrentSession();     
IList<T> lst; 
using (var trans = session.BeginTransaction()) 
{ 
    IQuery sql = session.CreateSQLQuery(syntax); 
    lst = slq.List<T>(); 
    trans.Commit(); 
}