我的问题涉及如何在订单上插入多个订单项,例如,在单个交易的范围内。
必须插入所有订单项,或者必须回滚交易。
是否可以在不将自定义CLR对象作为参数发送的情况下对同一个表执行多次插入,相当于表值参数?可以在循环内调用MyInsertSingleLineItemCommand,每次调用都插入一个行项吗?我们需要一个中间临时表吗?
答案 0 :(得分:1)
可以在不发送的情况下完成对同一个表的多次插入 自定义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();
}
}
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();
}
我们需要一个中间临时表吗?
不,你不需要临时表。
话虽如此,您可能需要考虑使用TransactionScope或SqlBulkCopy将数据传递给Sql Server。虽然这取决于您的要求。