public void Configure_should_uniquify_unconfigured_association_function_names()
        {
            var mockPropertyInfo = typeof(BType1).GetDeclaredProperty("As");

            var modelConfiguration = new ModelConfiguration();

            var navigationPropertyConfiguration
                = modelConfiguration.Entity(typeof(BType1)).Navigation(mockPropertyInfo);

            navigationPropertyConfiguration.ModificationStoredProceduresConfiguration
                = new ModificationStoredProceduresConfiguration();

            var modificationFunctionConfiguration = new ModificationStoredProcedureConfiguration();
            modificationFunctionConfiguration.HasName("AB_Delete");

            navigationPropertyConfiguration.ModificationStoredProceduresConfiguration
                .Insert(modificationFunctionConfiguration);

            var model = new EdmModel(DataSpace.CSpace);

            var entityA = model.AddEntityType("A");
            entityA.GetMetadataProperties().SetClrType(typeof(AType1));
            entityA.SetConfiguration(modelConfiguration.Entity(typeof(AType1)));

            var entityB = model.AddEntityType("B");
            entityB.GetMetadataProperties().SetClrType(typeof(BType1));
            entityB.SetConfiguration(modelConfiguration.Entity(typeof(BType1)));

            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_ProviderInfo, ProviderRegistry.Sql2008_ProviderManifest)
                    .Generate(model);

            modelConfiguration.Configure(databaseMapping, ProviderRegistry.Sql2008_ProviderManifest);

            Assert.True(databaseMapping.Database.Functions.Any(f => f.StoreFunctionNameAttribute == "AB_Delete"));
            Assert.True(databaseMapping.Database.Functions.Any(f => f.StoreFunctionNameAttribute == "AB_Delete1"));
        }
        private ModificationStoredProcedureConfiguration(ModificationStoredProcedureConfiguration 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 ModificationStoredProceduresConfiguration(ModificationStoredProceduresConfiguration source)
        {
            DebugCheck.NotNull(source);

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

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

            if (source._deleteModificationStoredProcedureConfiguration != null)
            {
                _deleteModificationStoredProcedureConfiguration = source._deleteModificationStoredProcedureConfiguration.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 ModificationStoredProceduresConfiguration();

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

            modificationFunctionsConfiguration.Insert(modificationFunctionConfiguration);

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

            var model = new EdmModel(DataSpace.CSpace);

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

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

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

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

            modelConfiguration.Configure(databaseMapping, ProviderRegistry.Sql2008_ProviderManifest);

            Assert.True(databaseMapping.Database.Functions.Any(f => f.StoreFunctionNameAttribute == "A_Insert"));
            Assert.True(databaseMapping.Database.Functions.Any(f => f.StoreFunctionNameAttribute == "A_Insert1"));
        }
Esempio n. 5
0
        public void Merge(ModificationStoredProceduresConfiguration modificationStoredProceduresConfiguration, bool allowOverride)
        {
            DebugCheck.NotNull(modificationStoredProceduresConfiguration);

            if (_insertModificationStoredProcedureConfiguration == null)
            {
                _insertModificationStoredProcedureConfiguration
                    = modificationStoredProceduresConfiguration.InsertModificationStoredProcedureConfiguration;
            }
            else if (modificationStoredProceduresConfiguration.InsertModificationStoredProcedureConfiguration != null)
            {
                _insertModificationStoredProcedureConfiguration
                .Merge(modificationStoredProceduresConfiguration.InsertModificationStoredProcedureConfiguration, allowOverride);
            }

            if (_updateModificationStoredProcedureConfiguration == null)
            {
                _updateModificationStoredProcedureConfiguration
                    = modificationStoredProceduresConfiguration.UpdateModificationStoredProcedureConfiguration;
            }
            else if (modificationStoredProceduresConfiguration.UpdateModificationStoredProcedureConfiguration != null)
            {
                _updateModificationStoredProcedureConfiguration
                .Merge(modificationStoredProceduresConfiguration.UpdateModificationStoredProcedureConfiguration, allowOverride);
            }

            if (_deleteModificationStoredProcedureConfiguration == null)
            {
                _deleteModificationStoredProcedureConfiguration
                    = modificationStoredProceduresConfiguration.DeleteModificationStoredProcedureConfiguration;
            }
            else if (modificationStoredProceduresConfiguration.DeleteModificationStoredProcedureConfiguration != null)
            {
                _deleteModificationStoredProcedureConfiguration
                .Merge(modificationStoredProceduresConfiguration.DeleteModificationStoredProcedureConfiguration, allowOverride);
            }
        }
Esempio n. 6
0
 public virtual void Delete(
     ModificationStoredProcedureConfiguration modificationStoredProcedureConfiguration)
 {
     this._deleteModificationStoredProcedureConfiguration = modificationStoredProcedureConfiguration;
 }
Esempio n. 7
0
 public virtual void Update(
     ModificationStoredProcedureConfiguration modificationStoredProcedureConfiguration)
 {
     this._updateModificationStoredProcedureConfiguration = modificationStoredProcedureConfiguration;
 }
Esempio n. 8
0
 public virtual void Insert(
     ModificationStoredProcedureConfiguration modificationStoredProcedureConfiguration)
 {
     this._insertModificationStoredProcedureConfiguration = modificationStoredProcedureConfiguration;
 }
Esempio n. 9
0
        private static void UniquifyFunctionName(
            DbDatabaseMapping databaseMapping,
            ModificationStoredProcedureConfiguration modificationStoredProcedureConfiguration,
            ModificationFunctionMapping functionMapping)
        {
            DebugCheck.NotNull(databaseMapping);
            DebugCheck.NotNull(functionMapping);

            if ((modificationStoredProcedureConfiguration == null)
                || string.IsNullOrWhiteSpace(modificationStoredProcedureConfiguration.Name))
            {
                functionMapping.Function.StoreFunctionNameAttribute
                    = databaseMapping.Database.Functions.Except(new[] { functionMapping.Function })
                                     .Select(f => f.FunctionName)
                                     .Uniquify(functionMapping.Function.FunctionName);
            }
        }
Esempio n. 10
0
        public virtual void Delete(ModificationStoredProcedureConfiguration modificationStoredProcedureConfiguration)
        {
            DebugCheck.NotNull(modificationStoredProcedureConfiguration);

            _deleteModificationStoredProcedureConfiguration = modificationStoredProcedureConfiguration;
        }
Esempio n. 11
0
        public virtual void Insert(ModificationStoredProcedureConfiguration modificationStoredProcedureConfiguration)
        {
            DebugCheck.NotNull(modificationStoredProcedureConfiguration);

            _insertModificationStoredProcedureConfiguration = modificationStoredProcedureConfiguration;
        }
        public void Merge(ModificationStoredProcedureConfiguration modificationStoredProcedureConfiguration, bool allowOverride)
        {
            DebugCheck.NotNull(modificationStoredProcedureConfiguration);

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

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

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

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

            foreach (var resultBinding in modificationStoredProcedureConfiguration.ResultBindings
                .Where(resultBinding => allowOverride || !_resultBindings.ContainsKey(resultBinding.Key)))
            {
                _resultBindings[resultBinding.Key] = resultBinding.Value;
            }
        }
        public bool IsCompatibleWith(ModificationStoredProcedureConfiguration 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 virtual void Update(ModificationStoredProcedureConfiguration modificationStoredProcedureConfiguration)
        {
            DebugCheck.NotNull(modificationStoredProcedureConfiguration);

            _updateModificationStoredProcedureConfiguration = modificationStoredProcedureConfiguration;
        }
        public void Merge(ModificationStoredProceduresConfiguration modificationStoredProceduresConfiguration, bool allowOverride)
        {
            DebugCheck.NotNull(modificationStoredProceduresConfiguration);

            if (_insertModificationStoredProcedureConfiguration == null)
            {
                _insertModificationStoredProcedureConfiguration
                    = modificationStoredProceduresConfiguration.InsertModificationStoredProcedureConfiguration;
            }
            else if (modificationStoredProceduresConfiguration.InsertModificationStoredProcedureConfiguration != null)
            {
                _insertModificationStoredProcedureConfiguration
                    .Merge(modificationStoredProceduresConfiguration.InsertModificationStoredProcedureConfiguration, allowOverride);
            }

            if (_updateModificationStoredProcedureConfiguration == null)
            {
                _updateModificationStoredProcedureConfiguration
                    = modificationStoredProceduresConfiguration.UpdateModificationStoredProcedureConfiguration;
            }
            else if (modificationStoredProceduresConfiguration.UpdateModificationStoredProcedureConfiguration != null)
            {
                _updateModificationStoredProcedureConfiguration
                    .Merge(modificationStoredProceduresConfiguration.UpdateModificationStoredProcedureConfiguration, allowOverride);
            }

            if (_deleteModificationStoredProcedureConfiguration == null)
            {
                _deleteModificationStoredProcedureConfiguration
                    = modificationStoredProceduresConfiguration.DeleteModificationStoredProcedureConfiguration;
            }
            else if (modificationStoredProceduresConfiguration.DeleteModificationStoredProcedureConfiguration != null)
            {
                _deleteModificationStoredProcedureConfiguration
                    .Merge(modificationStoredProceduresConfiguration.DeleteModificationStoredProcedureConfiguration, allowOverride);
            }
        }
        public virtual void Insert(ModificationStoredProcedureConfiguration modificationStoredProcedureConfiguration)
        {
            DebugCheck.NotNull(modificationStoredProcedureConfiguration);

            _insertModificationStoredProcedureConfiguration = modificationStoredProcedureConfiguration;
        }