碼復位SQL表的數據:如何,而在交易
BusinessLayer:
// an array of type int with 3 values is present
foreach(var item in list)
{
//Pseudocode incoming
Query_DoSomethingWithItem(item.Identifier, myArray)
}
DAL:
DoSomethingWithItem(long id, int[] theArray)
{
using(var scope = new TransactionScope()
{
// using SqlConnection
// fill command-parameter which makes use of a user-defined-table, which represents an array of integers.
// Important: The underlying stored_proc WRITES to database
conn.Open();
command.ExecuteNonQuery();
scope.Complete();
}
}
=>問題是,它運行完美在第一次運行中,但在第二次運行中,UDT的int數組已經從第一次執行中填充了值。
如何在首次運行後重置UDT的數據?
我試着用TransactionScope.RequiresNew但沒有區別。
編輯:這就是我想實現:
表:對象[的ObjectId,...]
表:項目[的ObjectId(FK),索引]
UDT:IntegerArrray
N項目可以屬於1個對象。
我不清楚這個問題,我必須指出它是WRITE,而不是讀取數據庫的訪問。第二次運行(foreach循環中的第二項)cmd.ExecuteNonQuery()將失敗,因爲user-defined-table(整數數組)已經有值。 –
我一直使用數據表來保存udt數據。不管你在DoSomethingWithItem中新建一個數據表。 – Steve