예제 #1
0
        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);
            }