internal DataSession(TransactionContext context, string transactionGroupName, Func<DataSession, Task> commit, Func<DataSession, Task> rollback, Func<DataSession, Task> end)
{
if (context == null) throw new ArgumentNullException(nameof(context));
if (string.IsNullOrEmpty(transactionGroupName)) throw new ArgumentNullException(nameof(transactionGroupName));
if (commit == null) throw new ArgumentNullException(nameof(commit));
if (rollback == null) throw new ArgumentNullException(nameof(rollback));
if (end == null) throw new ArgumentNullException(nameof(end));
this.TransactionContext = context;
this.TransactionGroupName = transactionGroupName;
this.Commit = commit;
this.Rollback = rollback;
this.End = end;
}