企业应用程序数据块事务

时间:2009-09-30 12:33:45

标签: c# enterprise-library

在应用程序块中遇到一些麻烦,试图找出在事务中执行3个SP的逻辑方法。

到目前为止,我有:

SqlDatabase db = new SqlDatabase(this.ConnectionString );
DbCommand insertMessageDetailCommand = db.GetStoredProcCommand("InsertMessageDetail");

看起来很好......从这一点来看,事情变得有些混乱,显然我需要添加我通过的SP参数:

db.AddInParameter.......

让我感到困惑的是 - 通知你在哪里添加参数 - 到SqlDatabase对象。

所以...这一切都很好,即使交易中的第一项也是如此:

DbTransaction transaction = connection.BeginTransaction();
                try
                {
                    //INSERT Message Info
                    int PK = Convert.ToInt32(db.ExecuteScalar(insertMessageDetailCommand, transaction)); 

除此之外,我需要使用自己的参数调用新的SP。我是否需要以某种方式清除db对象中的参数?

我看到这个工作的唯一方法是,如果我创建另一个db对象,但肯定这与同一个事务不兼容?

请帮忙

2 个答案:

答案 0 :(得分:0)

如果您想知道我想出来了,请注意db对象如何需要命令对象参数。它会将参数委托给所需的操作。如果你考虑它会很有帮助。

答案 1 :(得分:0)

您可以简单地将所有3个调用放在事务范围内。见:

http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.aspx