在应用程序块中遇到一些麻烦,试图找出在事务中执行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对象,但肯定这与同一个事务不兼容?
请帮忙
答案 0 :(得分:0)
如果您想知道我想出来了,请注意db对象如何需要命令对象参数。它会将参数委托给所需的操作。如果你考虑它会很有帮助。
答案 1 :(得分:0)
您可以简单地将所有3个调用放在事务范围内。见:
http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.aspx