private void ValidateTypedEntitySet(ValidationContext context) { var linkTypedEntitySet = NavigationPropertyHasTypedEntitySet.GetLinkToTypedEntitySet(this); if (linkTypedEntitySet != null) { ValidationResult validationResult = TypedEntitySetToNavigationPropertyRules.Validate(linkTypedEntitySet, false); context.LogErrorIfAny(validationResult); } PropertiesValidation.ValidateNavigationPropertyAssociation(this, context); }
internal static ValidationResult Validate(NavigationPropertyHasTypedEntitySet link, bool workWithTransaction) { ValidationResult result = new ValidationResult(); if (link != null && (!workWithTransaction || !link.CurrentTransactionIsSerializing())) { TypedEntitySet targetTypedEntitySet = link.TypedEntitySet; Interface targetItemTypeOfEntitySet = targetTypedEntitySet.ItemType; result.IsValid = targetItemTypeOfEntitySet != null; if (!result.IsValid) { result.ErrorMessage = string.Format(ERROR_MISSING_ITEM_TYPE, targetTypedEntitySet.Name); result.ErrorCode = CODE_TYPED_ENTITYSET_ITEM_TYPE; result.ValidationElements = new[] { targetTypedEntitySet }; } if (result.IsValid) { NavigationProperty sourceNavigationProperty = link.OwnerNavigationProperty; PersistentType targetPersistentType = sourceNavigationProperty.PersistentTypeHasAssociations.TargetPersistentType; result.IsValid = targetItemTypeOfEntitySet == targetPersistentType; if (!result.IsValid && targetItemTypeOfEntitySet.TypeKind == PersistentTypeKind.Interface && targetPersistentType is Interface) { Interface targetInterface = (Interface)targetPersistentType; result.IsValid = targetInterface.InheritInterface(targetItemTypeOfEntitySet); } if (!result.IsValid) { result.ValidationElements = new[] { targetItemTypeOfEntitySet }; result.ErrorCode = CODE_TYPED_ENTITYSET_ITEM_TYPE; result.ErrorMessage = string.Format(ERROR_INCOMPATIBLE_ITEM_TYPE, targetTypedEntitySet.Name, targetItemTypeOfEntitySet.Name, targetPersistentType.Name); } } if (!result.IsValid && workWithTransaction) { link.RollbackCurrentTransaction(result.ErrorMessage); } } return(result); }
private void RemoveTypedEntitySetConnectionFromNavigationProperties(InterfaceInheritInterfaces link) { Interface targetInterface = link.TargetInheritByInterface; var typedEntitySets = TypedEntitySetHasItemType.GetTypedEntitySets(targetInterface); if (typedEntitySets != null) { foreach (TypedEntitySet typedEntitySet in typedEntitySets) { var navigationPropertiesLink = NavigationPropertyHasTypedEntitySet.GetTypedEntitySetNavigationProperties(typedEntitySet); if (navigationPropertiesLink != null) { foreach (NavigationProperty navigationProperty in navigationPropertiesLink) { } } } } }
internal static ValidationResult Validate(NavigationPropertyHasTypedEntitySet link) { return(Validate(link, true)); }
public override void RolePlayerChanged(RolePlayerChangedEventArgs e) { NavigationPropertyHasTypedEntitySet link = e.ElementLink as NavigationPropertyHasTypedEntitySet; Validate(link); }
public override void ElementPropertyChanged(ElementPropertyChangedEventArgs e) { NavigationPropertyHasTypedEntitySet link = e.ModelElement as NavigationPropertyHasTypedEntitySet; Validate(link); }