protected final function SaveRows(IConnection $Connection, Table $Table, array $RowsWithoutPrimaryKey, array $RowsWithPrimaryKeys, ReturningDataKeyGenerator $ReturningDataKeyGenerator = null, PostIndividualInsertKeyGenerator $PostIndividualInsertKeyGenerator = null)
{
if (count($RowsWithPrimaryKeys) === 0 && count($RowsWithoutPrimaryKey) === 0) {
return;
}
$RowsToUpsert = null;
if ($PostIndividualInsertKeyGenerator !== null) {
$this->InsertRowsIndividually($Connection, $Table, $RowsWithoutPrimaryKey, function (Relational\Row $Row) use(&$Connection, &$PostIndividualInsertKeyGenerator) {
$PostIndividualInsertKeyGenerator->FillPrimaryKey($Connection, $Row);
});
$RowsToUpsert = $RowsWithPrimaryKeys;
} else {
$RowsToUpsert = array_merge($RowsWithoutPrimaryKey, $RowsWithPrimaryKeys);
}
if (count($RowsToUpsert) > 0) {
$ShouldReturnKeyData = $ReturningDataKeyGenerator !== null;
$ReturnedKeyData = $this->UpsertRows($Connection, $Table, $RowsToUpsert, $ShouldReturnKeyData);
if ($ShouldReturnKeyData) {
$ReturningDataKeyGenerator->FillPrimaryKeys($Connection, $RowsWithoutPrimaryKey, $ReturnedKeyData);
}
}
}