public void DeleteSelf() { // Delete all mapped references //List<ITable> associationTables = this.GetMappingSet().GetAssociationTablesFor(this.Database).ToList(); foreach (ITable associationTable in this.GetMappingSet().GetAssociationTablesFor(this.Database)) { foreach (Relationship rel in associationTable.Relationships.Where(r => r.PrimaryTable == this.PrimaryTable || r.PrimaryTable == this.ForeignTable)) { foreach (var reference in associationTable.MappedReferences()) { List <ITable> sourceEntityMappedTables = ((EntityLayer.EntityImpl)reference.SourceEntity).MappedTables().ToList(); List <ITable> targetEntityMappedTables = ((EntityLayer.EntityImpl)reference.TargetEntity).MappedTables().ToList(); if (sourceEntityMappedTables.Contains(this.ForeignTable) || sourceEntityMappedTables.Contains(this.PrimaryTable) || targetEntityMappedTables.Contains(this.ForeignTable) || targetEntityMappedTables.Contains(this.PrimaryTable)) { reference.DeleteSelf(); } } } } //List<EntityLayer.Reference> mappedReferences = this.MappedReferences().ToList(); foreach (var reference in this.MappedReferences()) { reference.DeleteSelf(); } var mappingSet = this.GetMappingSet(); if (mappingSet != null) { mappingSet.RemoveMappingsContaining(this); } if (PrimaryTable != null) { PrimaryTable.RemoveRelationship(this); } if (ForeignTable != null) { ForeignTable.RemoveRelationship(this); } Database.RemoveRelationship(this); }