我用的是托管空间,使用NBear会不会遇到不能解决的问题

1 view
Skip to first unread message

hewei

unread,
Dec 11, 2006, 10:35:06 PM12/11/06
to NBear Google Group
如题!

Teddy

unread,
Dec 11, 2006, 10:47:24 PM12/11/06
to nbear...@googlegroups.com
不会,但是,用于托管空间的话,要注意一点:对于每一个写操作,必须显式使用Gateway.BeginTransaction()方式的事务,并在传递tran参数,否则会报msdtc服务未开启错误。
 
例如,Save操作必须象下面这样执行:
 
DbTransaction tran = Gateway.BeginTransaction();
try
{
  gateway.Save(entityObj, tran);
 
  tran.Commit();
}
catch
{
  tran.Rollback();
  throw;
}
finally
{
  gateway.CloseTransaction(tran);
}

 
On 12/12/06, hewei <hewe...@gmail.com> wrote:
如题!

辉郎

unread,
Dec 12, 2006, 12:28:56 AM12/12/06
to NBear Google Group
那请问,我没有用到数据库写操作,所以我也没有调用事务,怎么还要报dtc未开启的错误呢,最后我开了dtc后才ok了

"Teddy 写道:

Teddy

unread,
Dec 12, 2006, 12:40:02 AM12/12/06
to nbear...@googlegroups.com
to 辉郎:
 
如果报msdtc错误,那么你肯定用到写操作了。可能你没有留意。因为,不用写操作,不会触发对TransactionScope的调用的,也就不可能报这个错误。
 
Teddy
 

MK2

unread,
Dec 12, 2006, 3:45:37 PM12/12/06
to NBear Google Group
using (DbTransaction tran = gateway.BeginTransaction())
{
.......
}

这样是否效果也等同于gateway.CloseTransaction(tran); 呢?

Teddy

unread,
Dec 12, 2006, 8:04:51 PM12/12/06
to nbear...@googlegroups.com
不等同!必须try catch。

hewei

unread,
Dec 19, 2006, 1:09:30 AM12/19/06
to NBear Google Group
为什么必须try catch

Teddy

unread,
Dec 19, 2006, 1:11:28 AM12/19/06
to nbear...@googlegroups.com
不使用try catch finally就不能保证在finally中Close这个Transaction,tran不close它关联的connection也就不会close,它的资源就会一直被占用。

On 12/19/06, hewei <hewe...@gmail.com> wrote:
为什么必须try catch

Reply all
Reply to author
Forward
0 new messages