public virtual void Apply(AssociationType item, System.Data.Entity.Infrastructure.DbModel model)
        {
            if (_isSelfReferencing(item))
            {
                return;
            }

            var propertyConfiguration = _getConfiguration(item);

            if (propertyConfiguration != null && _navigationPropertyConfigurationGetDeleteAction(propertyConfiguration).HasValue)
            {
                return;
            }

            AssociationEndMember collectionEndMember       = null;
            AssociationEndMember singleNavigationEndMember = null;

            if (_isRequiredToMany(item))
            {
                collectionEndMember       = GetSourceEnd(item);
                singleNavigationEndMember = GetTargetEnd(item);
            }
            else if (_isManyToRequired(item))
            {
                collectionEndMember       = GetTargetEnd(item);
                singleNavigationEndMember = GetSourceEnd(item);
            }

            if (collectionEndMember == null || singleNavigationEndMember == null)
            {
                return;
            }

            var collectionCascadeDeleteAttribute = GetCascadeDeleteAttribute(collectionEndMember);
            var singleCascadeDeleteAttribute     = GetCascadeDeleteAttribute(singleNavigationEndMember);

            // TODO

            //if (collectionCascadeDeleteAttribute != null || singleCascadeDeleteAttribute != null)
            //    collectionEndMember.DeleteBehavior = OperationAction.Cascade;

            if (collectionCascadeDeleteAttribute != null)
            {
                collectionEndMember.DeleteBehavior = collectionCascadeDeleteAttribute.CascadeDelete ? OperationAction.Cascade : OperationAction.None;
                //singleNavigationEndMember.DeleteBehavior = collectionCascadeDeleteAttribute.CascadeDelete ? OperationAction.Cascade : OperationAction.None;
            }
            else if (singleCascadeDeleteAttribute != null)
            {
                //collectionEndMember.DeleteBehavior = singleCascadeDeleteAttribute.CascadeDelete ? OperationAction.Cascade : OperationAction.None;
                singleNavigationEndMember.DeleteBehavior = singleCascadeDeleteAttribute.CascadeDelete ? OperationAction.Cascade : OperationAction.None;
            }
        }
Example #2
0
        public SQLiteBuilder(System.Data.Entity.Infrastructure.DbModel model)
        {
            this.model = model;

            if (model != null)
            {
                connstr = model.ProviderInfo.ProviderManifestToken;

                storeModel = model.StoreModel;

                providerManifest = model.ProviderManifest;

                versionFile = connstr.Split('=')[1] + ".version";
            }
        }
        public void Apply(AssociationType associationType, System.Data.Entity.Infrastructure.DbModel model)
        {
            if (associationType.IsForeignKey)
            {
                var constraint = associationType.Constraint;

                if (PropertiesHaveDefaultNames(constraint.FromProperties, constraint.ToRole.Name, constraint.ToProperties))
                {
                    ApplyCustomForeignKeyConvention(constraint.FromProperties);
                }

                if (PropertiesHaveDefaultNames(constraint.ToProperties, constraint.FromRole.Name, constraint.FromProperties))
                {
                    ApplyCustomForeignKeyConvention(constraint.ToProperties);
                }
            }
        }