//---------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner Microsoft
// @backupOwner Microsoft
//---------------------------------------------------------------------
using System.Data.Metadata.Edm;
namespace System.Data.Objects.DataClasses
{
[Serializable]
internal class RelationshipFixer : IRelationshipFixer
where TSourceEntity : class
where TTargetEntity : class
{
// The following fields are serialized. Adding or removing a serialized field is considered
// a breaking change. This includes changing the field type or field name of existing
// serialized fields. If you need to make this kind of change, it may be possible, but it
// will require some custom serialization/deserialization code.
RelationshipMultiplicity _sourceRoleMultiplicity;
RelationshipMultiplicity _targetRoleMultiplicity;
internal RelationshipFixer(RelationshipMultiplicity sourceRoleMultiplicity, RelationshipMultiplicity targetRoleMultiplicity)
{
_sourceRoleMultiplicity = sourceRoleMultiplicity;
_targetRoleMultiplicity = targetRoleMultiplicity;
}
///
/// Used during relationship fixup when the source end of the relationship is not
/// yet in the relationships list, and needs to be created
///
/// RelationshipNavigation to be set on new RelatedEnd
/// RelationshipManager to use for creating the new end
/// Reference to the new collection or reference on the other end of the relationship
RelatedEnd IRelationshipFixer.CreateSourceEnd(RelationshipNavigation navigation, RelationshipManager relationshipManager)
{
return relationshipManager.CreateRelatedEnd(navigation, _targetRoleMultiplicity, _sourceRoleMultiplicity, /*existingRelatedEnd*/ null);
}
}
}