私のコードは次のようになります:
public void InsertSampleData(DataTable tempTable)
{
session.Transaction.Commit();
var connection = session.GetSessionImplementation().Connection;
using (var sqlConnection = (SqlConnection)connection)
{
using (var cmd = sqlConnection.CreateCommand())
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "dbo.insertData";
cmd.Parameters.Add("@sItems", SqlDbType.Structured);
var sqlParam = cmd.Parameters["@Items"];
sqlParam.Direction = ParameterDirection.Input;
sqlParam.TypeName = "[dbo].[DataItemType]";
sqlParam.Value = tempTable;
cmd.ExecuteNonQuery();
}
}
}
コードは正常に機能しますが、トランザクションをコミットしないと、示されているように例外がスローされます
System.InvalidOperationException:コマンドに割り当てられた接続が保留中のローカルトランザクションにある場合、ExecuteNonQueryではコマンドにトランザクションが必要です。コマンドのTransactionプロパティが初期化されていません。
ただし、操作全体を完了する前に、トランザクションをまだコミットしたくありません。どうすればこれを達成できますか?