Example #1
0
        public void Merge(ModificationFunctionConfiguration modificationFunctionConfiguration, bool allowOverride)
        {
            DebugCheck.NotNull(modificationFunctionConfiguration);

            if (allowOverride || string.IsNullOrWhiteSpace(_name))
            {
                _name = modificationFunctionConfiguration.Name ?? _name;
            }

            if (allowOverride || string.IsNullOrWhiteSpace(_schema))
            {
                _schema = modificationFunctionConfiguration.Schema ?? _schema;
            }

            if (allowOverride || string.IsNullOrWhiteSpace(_rowsAffectedParameter))
            {
                _rowsAffectedParameter
                    = modificationFunctionConfiguration.RowsAffectedParameterName ?? _rowsAffectedParameter;
            }

            foreach (var parameterName in modificationFunctionConfiguration._parameterNames
                     .Where(parameterName => allowOverride || !_parameterNames.ContainsKey(parameterName.Key)))
            {
                _parameterNames[parameterName.Key] = parameterName.Value;
            }

            foreach (var resultBinding in modificationFunctionConfiguration.ResultBindings
                     .Where(resultBinding => allowOverride || !_resultBindings.ContainsKey(resultBinding.Key)))
            {
                _resultBindings[resultBinding.Key] = resultBinding.Value;
            }
        }
        public void Configure_should_uniquify_unconfigured_assocation_function_names()
        {
            var typeA = new MockType("A");
            var typeB = new MockType("B").Property(typeA.AsCollection(), "As");
            var mockPropertyInfo = typeB.GetProperty("As");
            typeA.Property(typeB.AsCollection(), "Bs");

            var modelConfiguration = new ModelConfiguration();

            var navigationPropertyConfiguration
                = modelConfiguration.Entity(typeB).Navigation(mockPropertyInfo);

            navigationPropertyConfiguration.ModificationFunctionsConfiguration
                = new ModificationFunctionsConfiguration();

            var modificationFunctionConfiguration = new ModificationFunctionConfiguration();
            modificationFunctionConfiguration.HasName("M2M_Delete");

            navigationPropertyConfiguration.ModificationFunctionsConfiguration
                .Insert(modificationFunctionConfiguration);

            var model = new EdmModel(DataSpace.CSpace);

            var entityA = model.AddEntityType("A");
            entityA.Annotations.SetClrType(typeA);
            entityA.SetConfiguration(modelConfiguration.Entity(typeA));

            var entityB = model.AddEntityType("B");
            entityB.Annotations.SetClrType(typeB);
            entityB.SetConfiguration(modelConfiguration.Entity(typeB));

            model.AddEntitySet("AS", entityA);
            model.AddEntitySet("BS", entityB);

            var associationType
                = model.AddAssociationType(
                    "M2M",
                    entityA,
                    RelationshipMultiplicity.Many,
                    entityB,
                    RelationshipMultiplicity.Many);

            associationType.SetConfiguration(navigationPropertyConfiguration);

            var navigationProperty
                = entityB.AddNavigationProperty("As", associationType);

            navigationProperty.SetClrPropertyInfo(mockPropertyInfo);

            model.AddAssociationSet("M2MSet", associationType);

            var databaseMapping
                = new DatabaseMappingGenerator(ProviderRegistry.Sql2008_ProviderManifest)
                    .Generate(model);

            modelConfiguration.Configure(databaseMapping, ProviderRegistry.Sql2008_ProviderManifest);

            Assert.True(databaseMapping.Database.Functions.Any(f => f.Name == "M2M_Delete"));
            Assert.True(databaseMapping.Database.Functions.Any(f => f.Name == "M2M_Delete1"));
        }
Example #3
0
        public bool IsCompatibleWith(ModificationFunctionConfiguration other)
        {
            DebugCheck.NotNull(other);

            if ((_name != null) &&
                (other._name != null) &&
                !string.Equals(_name, other._name, StringComparison.OrdinalIgnoreCase))
            {
                return(false);
            }

            if ((_schema != null) &&
                (other._schema != null) &&
                !string.Equals(_schema, other._schema, StringComparison.OrdinalIgnoreCase))
            {
                return(false);
            }

            return(!_parameterNames
                   .Join(
                       other._parameterNames,
                       kv1 => kv1.Key,
                       kv2 => kv2.Key,
                       (kv1, kv2) => !Equals(kv1.Value, kv2.Value))
                   .Any(j => j));
        }
        internal AssociationModificationFunctionConfiguration(
            PropertyInfo navigationPropertyInfo, ModificationFunctionConfiguration configuration)
        {
            DebugCheck.NotNull(navigationPropertyInfo);
            DebugCheck.NotNull(configuration);

            _navigationPropertyInfo = navigationPropertyInfo;
            _configuration          = configuration;
        }
        private ModificationFunctionConfiguration(ModificationFunctionConfiguration source)
        {
            DebugCheck.NotNull(source);

            _name = source._name;
            _schema = source._schema;
            _rowsAffectedParameter = source._rowsAffectedParameter;

            source._parameterNames.Each(
                c => _parameterNames.Add(c.Key, Tuple.Create(c.Value.Item1, c.Value.Item2)));

            source._resultBindings.Each(
                r => _resultBindings.Add(r.Key, r.Value));
        }
Example #6
0
        private ModificationFunctionConfiguration(ModificationFunctionConfiguration source)
        {
            DebugCheck.NotNull(source);

            _name   = source._name;
            _schema = source._schema;
            _rowsAffectedParameter = source._rowsAffectedParameter;

            source._parameterNames.Each(
                c => _parameterNames.Add(c.Key, Tuple.Create(c.Value.Item1, c.Value.Item2)));

            source._resultBindings.Each(
                r => _resultBindings.Add(r.Key, r.Value));
        }
        private static void UniquifyFunctionName(
            DbDatabaseMapping databaseMapping,
            ModificationFunctionConfiguration modificationFunctionConfiguration,
            StorageModificationFunctionMapping functionMapping)
        {
            DebugCheck.NotNull(databaseMapping);
            DebugCheck.NotNull(functionMapping);

            if ((modificationFunctionConfiguration == null) ||
                string.IsNullOrWhiteSpace(modificationFunctionConfiguration.Name))
            {
                functionMapping.Function.Name
                    = databaseMapping.Database.Functions.Except(new[] { functionMapping.Function })
                      .UniquifyName(functionMapping.Function.Name);
            }
        }
        private ModificationFunctionsConfiguration(ModificationFunctionsConfiguration source)
        {
            DebugCheck.NotNull(source);

            if (source._insertModificationFunctionConfiguration != null)
            {
                _insertModificationFunctionConfiguration = source._insertModificationFunctionConfiguration.Clone();
            }

            if (source._updateModificationFunctionConfiguration != null)
            {
                _updateModificationFunctionConfiguration = source._updateModificationFunctionConfiguration.Clone();
            }

            if (source._deleteModificationFunctionConfiguration != null)
            {
                _deleteModificationFunctionConfiguration = source._deleteModificationFunctionConfiguration.Clone();
            }
        }
        private ModificationFunctionsConfiguration(ModificationFunctionsConfiguration source)
        {
            DebugCheck.NotNull(source);

            if (source._insertModificationFunctionConfiguration != null)
            {
                _insertModificationFunctionConfiguration = source._insertModificationFunctionConfiguration.Clone();
            }

            if (source._updateModificationFunctionConfiguration != null)
            {
                _updateModificationFunctionConfiguration = source._updateModificationFunctionConfiguration.Clone();
            }

            if (source._deleteModificationFunctionConfiguration != null)
            {
                _deleteModificationFunctionConfiguration = source._deleteModificationFunctionConfiguration.Clone();
            }
        }
        public void Configure_should_uniquify_unconfigured_function_names()
        {
            var modelConfiguration = new ModelConfiguration();

            var typeA = new MockType("A");
            var typeB = new MockType("B");

            modelConfiguration.Entity(typeA).MapToStoredProcedures();

            var modificationFunctionsConfiguration
                = new ModificationFunctionsConfiguration();

            var modificationFunctionConfiguration = new ModificationFunctionConfiguration();
            modificationFunctionConfiguration.HasName("A_Insert");

            modificationFunctionsConfiguration.Insert(modificationFunctionConfiguration);

            modelConfiguration.Entity(typeB).MapToStoredProcedures(modificationFunctionsConfiguration);

            var model = new EdmModel(DataSpace.CSpace);

            var entityA = model.AddEntityType("A");
            entityA.Annotations.SetClrType(typeA);
            entityA.SetConfiguration(modelConfiguration.Entity(typeA));

            var entityB = model.AddEntityType("B");
            entityB.Annotations.SetClrType(typeB);
            entityB.SetConfiguration(modelConfiguration.Entity(typeB));

            model.AddEntitySet("AS", entityA);
            model.AddEntitySet("BS", entityB);

            var databaseMapping
                = new DatabaseMappingGenerator(ProviderRegistry.Sql2008_ProviderManifest)
                    .Generate(model);

            modelConfiguration.Configure(databaseMapping, ProviderRegistry.Sql2008_ProviderManifest);

            Assert.True(databaseMapping.Database.Functions.Any(f => f.Name == "A_Insert"));
            Assert.True(databaseMapping.Database.Functions.Any(f => f.Name == "A_Insert1"));
        }
        public void Merge(ModificationFunctionsConfiguration modificationFunctionsConfiguration, bool allowOverride)
        {
            DebugCheck.NotNull(modificationFunctionsConfiguration);

            if (_insertModificationFunctionConfiguration == null)
            {
                _insertModificationFunctionConfiguration
                    = modificationFunctionsConfiguration.InsertModificationFunctionConfiguration;
            }
            else if (modificationFunctionsConfiguration.InsertModificationFunctionConfiguration != null)
            {
                _insertModificationFunctionConfiguration
                .Merge(modificationFunctionsConfiguration.InsertModificationFunctionConfiguration, allowOverride);
            }

            if (_updateModificationFunctionConfiguration == null)
            {
                _updateModificationFunctionConfiguration
                    = modificationFunctionsConfiguration.UpdateModificationFunctionConfiguration;
            }
            else if (modificationFunctionsConfiguration.UpdateModificationFunctionConfiguration != null)
            {
                _updateModificationFunctionConfiguration
                .Merge(modificationFunctionsConfiguration.UpdateModificationFunctionConfiguration, allowOverride);
            }

            if (_deleteModificationFunctionConfiguration == null)
            {
                _deleteModificationFunctionConfiguration
                    = modificationFunctionsConfiguration.DeleteModificationFunctionConfiguration;
            }
            else if (modificationFunctionsConfiguration.DeleteModificationFunctionConfiguration != null)
            {
                _deleteModificationFunctionConfiguration
                .Merge(modificationFunctionsConfiguration.DeleteModificationFunctionConfiguration, allowOverride);
            }
        }
        public bool IsCompatibleWith(ModificationFunctionConfiguration other)
        {
            DebugCheck.NotNull(other);

            if ((_name != null)
                && (other._name != null)
                && !string.Equals(_name, other._name, StringComparison.OrdinalIgnoreCase))
            {
                return false;
            }

            if ((_schema != null)
                && (other._schema != null)
                && !string.Equals(_schema, other._schema, StringComparison.OrdinalIgnoreCase))
            {
                return false;
            }

            return !_parameterNames
                        .Join(
                            other._parameterNames,
                            kv1 => kv1.Key,
                            kv2 => kv2.Key,
                            (kv1, kv2) => !Equals(kv1.Value, kv2.Value))
                        .Any(j => j);
        }
        public void Merge(ModificationFunctionConfiguration modificationFunctionConfiguration, bool allowOverride)
        {
            DebugCheck.NotNull(modificationFunctionConfiguration);

            if (allowOverride || string.IsNullOrWhiteSpace(_name))
            {
                _name = modificationFunctionConfiguration.Name ?? _name;
            }

            if (allowOverride || string.IsNullOrWhiteSpace(_schema))
            {
                _schema = modificationFunctionConfiguration.Schema ?? _schema;
            }

            if (allowOverride || string.IsNullOrWhiteSpace(_rowsAffectedParameter))
            {
                _rowsAffectedParameter
                    = modificationFunctionConfiguration.RowsAffectedParameterName ?? _rowsAffectedParameter;
            }

            foreach (var parameterName in modificationFunctionConfiguration._parameterNames
                .Where(parameterName => allowOverride || !_parameterNames.ContainsKey(parameterName.Key)))
            {
                _parameterNames[parameterName.Key] = parameterName.Value;
            }

            foreach (var resultBinding in modificationFunctionConfiguration.ResultBindings
                .Where(resultBinding => allowOverride || !_resultBindings.ContainsKey(resultBinding.Key)))
            {
                _resultBindings[resultBinding.Key] = resultBinding.Value;
            }
        }
        public virtual void Delete(ModificationFunctionConfiguration modificationFunctionConfiguration)
        {
            DebugCheck.NotNull(modificationFunctionConfiguration);

            _deleteModificationFunctionConfiguration = modificationFunctionConfiguration;
        }
        private static void UniquifyFunctionName(
            DbDatabaseMapping databaseMapping,
            ModificationFunctionConfiguration modificationFunctionConfiguration,
            StorageModificationFunctionMapping functionMapping)
        {
            DebugCheck.NotNull(databaseMapping);
            DebugCheck.NotNull(functionMapping);

            if ((modificationFunctionConfiguration == null)
                || string.IsNullOrWhiteSpace(modificationFunctionConfiguration.Name))
            {
                functionMapping.Function.Name
                    = databaseMapping.Database.Functions.Except(new[] { functionMapping.Function })
                                     .UniquifyName(functionMapping.Function.Name);
            }
        }
        public virtual void Insert(ModificationFunctionConfiguration modificationFunctionConfiguration)
        {
            DebugCheck.NotNull(modificationFunctionConfiguration);

            _insertModificationFunctionConfiguration = modificationFunctionConfiguration;
        }
        public virtual void Delete(ModificationFunctionConfiguration modificationFunctionConfiguration)
        {
            DebugCheck.NotNull(modificationFunctionConfiguration);

            _deleteModificationFunctionConfiguration = modificationFunctionConfiguration;
        }
        public virtual void Insert(ModificationFunctionConfiguration modificationFunctionConfiguration)
        {
            DebugCheck.NotNull(modificationFunctionConfiguration);

            _insertModificationFunctionConfiguration = modificationFunctionConfiguration;
        }