public override void UpdatedAllOrphan(TForeignEntity ForeignEntity) { TForeignKey foreignKey = foreignKeyManager.GetEntityKey(ForeignEntity); if (propRelated != null) { EntityCollection <TForeignEntity, TRelatedEntity> relatedCollection = getRColc(ForeignEntity); foreach (TRelatedEntity RelatedEntity in orphanage.GetAllRelated(foreignKeyManager.GetEntityKey(ForeignEntity)).ToArray()) { if (!RelatedEntity.HasEditable() || RelatedEntity.HasBusy()) { throw new EntityRelationManagerException($"[{this}] UpdatedAllOrphan Failed, {RelatedEntity} With {RelatedEntity.State} State Is Not Supported"); } // UpdatedOrphan .... setFRef(RelatedEntity, ForeignEntity); OrphanageRemove(RelatedEntity, foreignKey); relatedCollection.InternalAdd(RelatedEntity); RelatedEntity.State |= EntityState.Busy; RelatedEntity.OnPropertyChanged(propForeignReference.Name); RelatedEntity.State ^= EntityState.Busy; } } else { foreach (TRelatedEntity RelatedEntity in orphanage.GetAllRelated(foreignKeyManager.GetEntityKey(ForeignEntity)).ToArray()) { if (!RelatedEntity.HasEditable() || RelatedEntity.HasBusy()) { throw new EntityRelationManagerException($"[{this}] UpdatedAllOrphan Failed, {RelatedEntity} With {RelatedEntity.State} State Is Not Supported"); } // UpdatedOrphan .... setFRef(RelatedEntity, ForeignEntity); OrphanageRemove(RelatedEntity, foreignKey); RelatedEntity.State |= EntityState.Busy; RelatedEntity.OnPropertyChanged(propForeignReference.Name); RelatedEntity.State ^= EntityState.Busy; } } }
public override void NotifyAllRelated(TForeignEntity ForeignEntity) { if (propRelated != null) { EntityUnique <TForeignEntity, TRelatedEntity> relatedUnique = getRUniq(ForeignEntity); TRelatedEntity RelatedEntity = relatedUnique.Entity; if (!RelatedEntity.IsNull()) { if (!RelatedEntity.HasEditable() || RelatedEntity.HasBusy()) { throw new EntityRelationManagerException($"[{this}] NotifyAllRelated Failed, {RelatedEntity} With {RelatedEntity.State} State Is Not Supported"); } RelatedEntity.State |= EntityState.Busy; RelatedEntity.OnPropertyChanged(propForeignReference.Name); RelatedEntity.State ^= EntityState.Busy; } } else { foreach (TRelatedEntity RelatedEntity in relatedEntitySet) { TForeignEntity foreignEntity = getFRef(RelatedEntity); if (foreignEntity == ForeignEntity) { if (!RelatedEntity.HasEditable() || RelatedEntity.HasBusy()) { throw new EntityRelationManagerException($"[{this}] NotifyAllRelated Failed, {RelatedEntity} With {RelatedEntity.State} State Is Not Supported"); } RelatedEntity.State |= EntityState.Busy; RelatedEntity.OnPropertyChanged(propForeignReference.Name); RelatedEntity.State ^= EntityState.Busy; break; } } } }