0
我的問題涉及如何在一個訂單上插入多個訂單項,例如在單個事務的範圍內。在單個事務的範圍內多次調用相同的ADO.NET命令
必須插入所有行項目或必須回滾事務。
可以在不發送自定義CLR對象作爲參數的情況下對同一張表進行多次插入,相當於一個表值參數? MyInsertSingleLineItemCommand是否可以在循環中調用,並在每次調用時插入一個行項目?我們需要中介臨時表嗎?
我的問題涉及如何在一個訂單上插入多個訂單項,例如在單個事務的範圍內。在單個事務的範圍內多次調用相同的ADO.NET命令
必須插入所有行項目或必須回滾事務。
可以在不發送自定義CLR對象作爲參數的情況下對同一張表進行多次插入,相當於一個表值參數? MyInsertSingleLineItemCommand是否可以在循環中調用,並在每次調用時插入一個行項目?我們需要中介臨時表嗎?
可以將多個插入到同一個表,不發送 自定義的CLR對象作爲參數來完成,相當於表值參數 ?
是的,您可以使用SqlTransaction在單個事務中逐行進行。
可以在循環中調用MyInsertSingleLineItemCommand,在每次調用時插入 一個行項目?
是下面的示例代碼。
using (SqlConnection cn = new SqlConnection("YOUR CONNECTION STRING")
{
cn.Open();
using (SqlTransaction tr = cn.BeginTransaction())
{
// your looping code here persisting to sql server db
tr.Commit();
}
}
您也可以使用TransactionScope來完成此操作。
using (var ts = new TransactionScope())
{
using (SqlConnection connection = new SqlConnection("YOUR CONNECTION STRING"))
{
connection.Open();
// your looping code here persisting to sql server db
}
ts.Complete();
}
我們需要一箇中間臨時表?
不,你不需要臨時表。
這就是說你可能想要考慮使用SqlBulkCopy或Table Value Parameter來傳遞你的數據到Sql Server。儘管這取決於你的要求。
當然。 dotnet中有一個SqlTransaction類,可以用來開始/提交/回滾。 https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqltransaction(v=vs.110).aspx –
是的,這是可能的,但一個表值參數會更有效率在這案件。 –