繁体   English   中英

如何使用linqto SQL启用我的代码交易功能?

[英]How can i enable Transaction my codes with linqto SQL?

如果写下面的代码:错误返回。我喜欢劝告:
http://stackoverflow.com/questions/794364/how-do-i-use-transactionscope-in​​-c
但是只有错误更改: 合作伙伴事务管理器已禁用其对远程/网络事务的支持,HRESULT异常:0x8004D025

我正在使用Windows Server 2003。


 using (var stockMovementCtx = new StockMovementCtxDataContext())
            {
                using (var scope = new TransactionScope())
                {

// do something....
}
scope.Complete();
}

但是如果我改变密码; 一切都好:


using (var stockMovementCtx = new StockMovementCtxDataContext())
            {


// do something....

}

我该如何解决以下错误。 这真的很重要。请帮助我:((((

如有必要, TransactionScope将提升为DTC。 听起来好像DTC没有正确配置,通常是由于防火墙的限制。 尝试dtcping服务器(重要:在两个方向上)之间。

默认情况下, DataContext将所有操作包装在Transaction ,因此在使用DataContext时不需要显式执行Transaction。 阅读

http://weblogs.asp.net/scottgu/archive/2007/07/11/linq-to-sql-part-4-updating-our-database.aspx

using (var stockMovementCtx = new StockMovementCtxDataContext())
{
     // do something....


     //everything until this point is within the transaction.
     stockMovementCtx.SubmitChange();
}

为什么我们需要TransactionScope?

TransactionScope使您可以执行超出数据库许可的事务。 假设您有以下一系列操作,并且所有操作都是原子操作,它们需要在事务中执行。

1.)在表1中添加记录
2.)在表2中添加记录
3.)在磁盘上写一个新文件
4.)重命名磁盘上的文件X
5.)更新表3中的文件记录

如果使用SqlTransaction,则只有操作1,3和5可以参与事务,而3和4则不能,因为它们根本不关联数据库。 在这种情况下,TrasanctionScope可以为您提供帮助。 TransactionScope利用MSDTC(分布式迁移协调),可以帮助您在数据库上下文之外进行事务。 您可以将所有五个操作包装在TransactionScope事务中,以原子方式执行它们。 还值得注意的是,TransactionScope支持嵌套事务,这意味着一个事务块可以包含多组事务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM