public final function MapPersistedRelationships(Object\UnitOfWork $UnitOfWork, Relational\Transaction $Transaction, IEntityRelationalMap $EntityRelationalMap, array $ObjectPersistedRelationships)
{
$ParentPrimaryKey = null;
$ChildPersistenceData = [];
foreach ($ObjectPersistedRelationships as $Key => $ObjectPersistedRelationship) {
if ($ObjectPersistedRelationship === null) {
continue;
}
if ($ParentPrimaryKey === null) {
$ParentPrimaryKey = $EntityRelationalMap->MapIdentityToPrimaryKey($ObjectPersistedRelationship->GetParentIdentity());
}
if ($ObjectPersistedRelationship->IsIdentifying()) {
$ChildPersistenceData[$Key] = $ObjectPersistedRelationship->GetChildPersistenceData();
}
}
if (count($ChildPersistenceData) > 0) {
$ChildResultRows = $this->MapPersistenceDataToTransaction($UnitOfWork, $Transaction, $ChildPersistenceData);
}
$RelationalPersistedRelationships = [];
foreach ($ObjectPersistedRelationships as $Key => $ObjectPersistedRelationship) {
if ($ObjectPersistedRelationship === null) {
$RelationalPersistedRelationships[$Key] = null;
continue;
}
if ($ObjectPersistedRelationship->IsIdentifying()) {
$RelationalPersistedRelationships[$Key] = new Relational\PersistedRelationship($ParentPrimaryKey, null, $ChildResultRows[$Key]);
} else {
$RelatedIdentity = $ObjectPersistedRelationship->GetRelatedIdentity();
$RelatedEntityRelationalMap = $this->EntityRelationMaps[$RelatedIdentity->GetEntityType()];
$RelatedPrimaryKey = $RelatedEntityRelationalMap->MapIdentityToPrimaryKey($RelatedIdentity);
$RelationalPersistedRelationships[$Key] = new Relational\PersistedRelationship($ParentPrimaryKey, $RelatedPrimaryKey, null);
}
}
return $RelationalPersistedRelationships;
}