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")); }
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 Delete( ModificationStoredProcedureConfiguration modificationStoredProcedureConfiguration) { this._deleteModificationStoredProcedureConfiguration = modificationStoredProcedureConfiguration; }
public virtual void Update( ModificationStoredProcedureConfiguration modificationStoredProcedureConfiguration) { this._updateModificationStoredProcedureConfiguration = modificationStoredProcedureConfiguration; }
public virtual void Insert( ModificationStoredProcedureConfiguration modificationStoredProcedureConfiguration) { this._insertModificationStoredProcedureConfiguration = modificationStoredProcedureConfiguration; }
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); } }
public virtual void Delete(ModificationStoredProcedureConfiguration modificationStoredProcedureConfiguration) { DebugCheck.NotNull(modificationStoredProcedureConfiguration); _deleteModificationStoredProcedureConfiguration = modificationStoredProcedureConfiguration; }
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; }