internal static void FixRelationshipReferences(Relationship relationshipToCopyInto, Relationship relationshipToCopyFrom) { ITable primaryTable = relationshipToCopyInto.Database.Tables.FirstOrDefault(t => t.Name == relationshipToCopyFrom.PrimaryTable.Name && t.Schema == relationshipToCopyFrom.PrimaryTable.Schema); ITable foreignTable = relationshipToCopyInto.Database.Tables.FirstOrDefault(t => t.Name == relationshipToCopyFrom.ForeignTable.Name && t.Schema == relationshipToCopyFrom.ForeignTable.Schema); if (primaryTable == null || foreignTable == null) { return; } relationshipToCopyInto.AddThisTo(primaryTable, foreignTable); relationshipToCopyInto.ForeignKey.Parent = foreignTable; relationshipToCopyInto.PrimaryKey.Parent = primaryTable; //relationshipToCopyInto.ForeignKey.Parent = relationshipToCopyInto.Database.Tables.Single(t => t.Name == relationshipToCopyFrom.ForeignTable.Name); //relationshipToCopyInto.PrimaryKey.Parent = relationshipToCopyInto.Database.Tables.Single(t => t.Name == relationshipToCopyFrom.PrimaryTable.Name); // Fix Column references foreach (var col in relationshipToCopyFrom.ForeignKey.Columns) { relationshipToCopyInto.ForeignKey.AddColumn(col.Name); } foreach (var col in relationshipToCopyFrom.PrimaryKey.Columns) { relationshipToCopyInto.PrimaryKey.AddColumn(col.Name); } //// Fix ReferencedKey reference //if (relationshipToCopyFrom.ReferencedKey != null) //{ // ITable referencedTable = relationshipToCopyInto.Parent.Database.GetTable(relationshipToCopyFrom.ReferencedKey.Parent.Name); // relationshipToCopyInto.ReferencedKey = referencedTable.GetKey(relationshipToCopyFrom.ReferencedKey.Name); //} }