草庐IT

事务处

全部标签

c# - 使用手动事务和分层事务进行单元测试

由于一些限制,我无法使用EntityFramework,因此需要手动使用SQL连接、命令和事务。在为调用这些数据层操作的方法编写单元测试时,我偶然发现了一些问题。对于单元测试,我需要在事务中执行它们,因为大多数操作本质上都在更改数据,因此在事务之外执行它们是有问题的,因为这会更改整个基础数据.因此,我需要围绕这些放置一个事务(最后没有触发提交)。关于这些BL方法的工作原理,现在我有2种不同的变体。一些内部有交易本身,而另一些则根本没有交易。这两种变体都会导致问题。分层事务:在这里我得到错误,DTC由于超时取消了分布式事务(尽管超时设置为15分钟并且它只运行了2分钟)。只有1个事务:当我

c# - 如何在单个事务中将文件写入磁盘并插入数据库记录?

我正在尝试将文件写入磁盘以及通过存储过程将数据插入数据库,所有这些都在原子事务中进行。即,如果这两个操作中的任何一个失败(文件无法写入磁盘或存储过程失败),我什么都不做,只是将异常抛回给调用者。关于如何最好地处理文件写入和数据库插入的原子事务有什么建议吗?附加信息:我在MSSQLServer中使用带有存储过程的C#.NET,但不一定针对这些技术量身定制的通用解决方案也很好。更新:在查看了以下所有答案并研究了其他答案后,我写了thispost关于如何使用3种不同的方法解决这个问题。 最佳答案 你需要使用新的TxF,Vista、Wind

c# - 使用 C# 和 ODP.NET 执行 Oracle 事务

我很困惑。从表面上看,在C#中执行事务似乎简单的。从这里开始:http://docs.oracle.com/cd/B19306_01/win.102/b14307/OracleTransactionClass.htmstringconstr="UserId=scott;Password=tiger;DataSource=oracle";OracleConnectioncon=newOracleConnection(constr);con.Open();OracleCommandcmd=con.CreateCommand();cmd.CommandText="SELECTCOUNT(*)

c# - 事务和事务范围之间的区别

我正在开发一个与SQLServer2005数据库通信以执行某些存储过程的应用程序。我的客户要求所有事务都在C#端进行管理,而不是由SQLServer管理,因此我在访问数据库时使用System.Transactions.TransactionScope。但是,我刚刚看到System.Transactions.Transaction数据类型,我很困惑……每种类型的主要优点/缺点是什么?我应该使用哪一个?请注意,我还必须使用EnterpriseLibrary的数据访问应用程序block。 最佳答案 来自msdn:TheTransactio

c# - TransactionScope 不回滚事务

这是我的交易范围源代码的当前架构。第三个插入抛出一个.NET异常(不是SQL异常)并且它没有回滚前两个插入语句。我做错了什么?编辑:我从insert2和insert3中删除了try/catch。我还从insert1try/catch中删除了异常处理实用程序并放置了“throwex”。它仍然没有回滚事务。编辑2:我在Insert3方法中添加了try/catch,并在catch语句中添加了一个“throw”。它仍然没有回滚事务。更新:根据我收到的反馈,“SqlHelper”类使用SqlConnection对象建立与数据库的连接,然后创建一个SqlCommand对象,将CommandType

c# - 在 SQL Server 2014 中围绕带有事务的存储过程使用 TransactionScope

我正在使用C#和ADO.Net以及TransactionScope在ASP.Net应用程序中运行事务。此事务应该跨多个表保存一些数据,然后向订阅者发送电子邮件。问题:当它包含对在SQLServer2014中有自己的事务的存储过程的调用时,它是否是TransactionScope的有效使用,或者我应该删除SQL事务语句,即begintran、committran和rollbacktran语句来自在此TransactionScope中调用的存储过程>?这个场景的C#代码和存储过程的T-SQL代码都在下面提到。使用TransactionScope的C#代码:try{using(Transac

c# - 在事务中调用多个 SQL Server 存储过程

为了在我当前的项目中使用,我创建了一个允许我调用SQLServer异步的类。我的代码是这样的:internalclassCommandAndCallback{publicSqlCommandSql{get;set;}publicTCallbackCallback{get;set;}publicTErrorError{get;set;}}classMyCodes:SingletonBase{privatestaticstring_connString=@"DataSource=MyDB;InitialCatalog=ED;IntegratedSecurity=True;Asynchron

c# - 当分配给命令的连接处于挂起的本地传输时,ExecuteReader 要求命令具有事务

我必须用单个事务插入两个表,必须实现的查询如下。其次在SqlDataReaderread=comm.ExecuteReader();获取异常publicvoidSqlExecuteNonQuery(Customerobj){//stringquery="DECLARE@_customerIDint";stringquery1="INSERTINTOcustomer(customerName,customerSex,Email)VALUES('"+obj.name+"','"+obj.sex+"','"+obj.Email+"')";//stringquery2="SET@_custom

c# - 我是否应该始终在 nhibernate 中使用事务(即使是简单的读写)?

我知道对于多部分写入,我应该在nhibernate中使用事务。但是对于简单的读写(1部分)呢……我读到始终使用事务是一种很好的做法。这是必需的吗?我应该做以下简单阅读吗?或者我可以将交易部分全部放在一起吗?publicPrinterJobRetrievePrinterJobById(Guidid){using(ISessionsession=sessionFactory.OpenSession()){using(ITransactiontransaction=session.BeginTransaction()){varprinterJob2=(PrinterJob)session.G

c# - 消息在进行事务处理时未到达 MSMQ

我在本地机器上创建了一个私有(private)MSMQ。我正在使用以下C#代码将消息发送到队列。当我将队列更改为事务性队列时,消息未到达MSMQ。但是,在Send方法中没有抛出异常。我需要进行哪些更改才能使其正常工作?usingSystem;usingSystem.Messaging;usingSystem.Data;publicpartialclass_Default:System.Web.UI.Page{//Sharingviolationresultedfromqueuebeingopenalreadyforexclusivereceive.MessageQueuehelpReq