private Tuple <EntityTypeModificationFunctionMapping, ModificationFunctionMapping> GetFunctionMapping( ExtractedStateEntry stateEntry) { EntityType index = stateEntry.Current == null ? (EntityType)stateEntry.Original.StructuralType : (EntityType)stateEntry.Current.StructuralType; EntityTypeModificationFunctionMapping typeMapping = this.m_typeMappings[index]; ModificationFunctionMapping mapping; switch (stateEntry.State) { case EntityState.Unchanged: case EntityState.Modified: mapping = typeMapping.UpdateFunctionMapping; EntityUtil.ValidateNecessaryModificationFunctionMapping(mapping, "Update", stateEntry.Source, "EntityType", index.Name); break; case EntityState.Added: mapping = typeMapping.InsertFunctionMapping; EntityUtil.ValidateNecessaryModificationFunctionMapping(mapping, "Insert", stateEntry.Source, "EntityType", index.Name); break; case EntityState.Deleted: mapping = typeMapping.DeleteFunctionMapping; EntityUtil.ValidateNecessaryModificationFunctionMapping(mapping, "Delete", stateEntry.Source, "EntityType", index.Name); break; default: mapping = (ModificationFunctionMapping)null; break; } return(Tuple.Create <EntityTypeModificationFunctionMapping, ModificationFunctionMapping>(typeMapping, mapping)); }
public DynamicToFunctionModificationCommandConverter( EntityTypeModificationFunctionMapping entityTypeModificationFunctionMapping, EntityContainerMapping entityContainerMapping) { this._entityTypeModificationFunctionMapping = entityTypeModificationFunctionMapping; this._entityContainerMapping = entityContainerMapping; }
public virtual void Configure( EntityTypeModificationFunctionMapping modificationStoredProcedureMapping, DbProviderManifest providerManifest) { DebugCheck.NotNull(modificationStoredProcedureMapping); DebugCheck.NotNull(providerManifest); if (_insertModificationStoredProcedureConfiguration != null) { _insertModificationStoredProcedureConfiguration .Configure(modificationStoredProcedureMapping.InsertFunctionMapping, providerManifest); } if (_updateModificationStoredProcedureConfiguration != null) { _updateModificationStoredProcedureConfiguration .Configure(modificationStoredProcedureMapping.UpdateFunctionMapping, providerManifest); } if (_deleteModificationStoredProcedureConfiguration != null) { _deleteModificationStoredProcedureConfiguration .Configure(modificationStoredProcedureMapping.DeleteFunctionMapping, providerManifest); } }
public void Generate(EntityType entityType, DbDatabaseMapping databaseMapping) { if (entityType.Abstract) { return; } EntitySet entitySet = databaseMapping.Model.GetEntitySet(entityType); EntitySetMapping entitySetMapping = databaseMapping.GetEntitySetMapping(entitySet); List <ColumnMappingBuilder> list1 = ModificationFunctionMappingGenerator.GetColumnMappings(entityType, entitySetMapping).ToList <ColumnMappingBuilder>(); List <Tuple <ModificationFunctionMemberPath, EdmProperty> > list2 = ModificationFunctionMappingGenerator.GetIndependentFkColumns(entityType, databaseMapping).ToList <Tuple <ModificationFunctionMemberPath, EdmProperty> >(); ModificationFunctionMapping functionMapping1 = this.GenerateFunctionMapping(ModificationOperator.Insert, (EntitySetBase)entitySetMapping.EntitySet, (EntityTypeBase)entityType, databaseMapping, (IEnumerable <EdmProperty>)entityType.Properties, (IEnumerable <Tuple <ModificationFunctionMemberPath, EdmProperty> >)list2, (IList <ColumnMappingBuilder>)list1, entityType.Properties.Where <EdmProperty>((Func <EdmProperty, bool>)(p => p.HasStoreGeneratedPattern())), (string)null); ModificationFunctionMapping functionMapping2 = this.GenerateFunctionMapping(ModificationOperator.Update, (EntitySetBase)entitySetMapping.EntitySet, (EntityTypeBase)entityType, databaseMapping, (IEnumerable <EdmProperty>)entityType.Properties, (IEnumerable <Tuple <ModificationFunctionMemberPath, EdmProperty> >)list2, (IList <ColumnMappingBuilder>)list1, entityType.Properties.Where <EdmProperty>((Func <EdmProperty, bool>)(p => { StoreGeneratedPattern?generatedPattern = p.GetStoreGeneratedPattern(); if (generatedPattern.GetValueOrDefault() == StoreGeneratedPattern.Computed) { return(generatedPattern.HasValue); } return(false); })), (string)null); ModificationFunctionMapping functionMapping3 = this.GenerateFunctionMapping(ModificationOperator.Delete, (EntitySetBase)entitySetMapping.EntitySet, (EntityTypeBase)entityType, databaseMapping, (IEnumerable <EdmProperty>)entityType.Properties, (IEnumerable <Tuple <ModificationFunctionMemberPath, EdmProperty> >)list2, (IList <ColumnMappingBuilder>)list1, (IEnumerable <EdmProperty>)null, (string)null); EntityTypeModificationFunctionMapping modificationFunctionMapping = new EntityTypeModificationFunctionMapping(entityType, functionMapping3, functionMapping1, functionMapping2); entitySetMapping.AddModificationFunctionMapping(modificationFunctionMapping); }
private void WriteModificationFunctionMapping( EntityTypeModificationFunctionMapping modificationFunctionMapping) { this._xmlWriter.WriteStartElement("ModificationFunctionMapping"); this.WriteFunctionMapping("InsertFunction", modificationFunctionMapping.InsertFunctionMapping, false); this.WriteFunctionMapping("UpdateFunction", modificationFunctionMapping.UpdateFunctionMapping, false); this.WriteFunctionMapping("DeleteFunction", modificationFunctionMapping.DeleteFunctionMapping, false); this._xmlWriter.WriteEndElement(); }
public DynamicToFunctionModificationCommandConverter( EntityTypeModificationFunctionMapping entityTypeModificationFunctionMapping, EntityContainerMapping entityContainerMapping) { DebugCheck.NotNull(entityTypeModificationFunctionMapping); DebugCheck.NotNull(entityContainerMapping); _entityTypeModificationFunctionMapping = entityTypeModificationFunctionMapping; _entityContainerMapping = entityContainerMapping; }
private void WriteModificationFunctionMapping(EntityTypeModificationFunctionMapping modificationFunctionMapping) { DebugCheck.NotNull(modificationFunctionMapping); _xmlWriter.WriteStartElement(MslConstructs.ModificationFunctionMappingElement); WriteFunctionMapping(MslConstructs.InsertFunctionElement, modificationFunctionMapping.InsertFunctionMapping); WriteFunctionMapping(MslConstructs.UpdateFunctionElement, modificationFunctionMapping.UpdateFunctionMapping); WriteFunctionMapping(MslConstructs.DeleteFunctionElement, modificationFunctionMapping.DeleteFunctionMapping); _xmlWriter.WriteEndElement(); }
public virtual void Configure( EntityTypeModificationFunctionMapping modificationStoredProcedureMapping, DbProviderManifest providerManifest) { if (this._insertModificationStoredProcedureConfiguration != null) { this._insertModificationStoredProcedureConfiguration.Configure(modificationStoredProcedureMapping.InsertFunctionMapping, providerManifest); } if (this._updateModificationStoredProcedureConfiguration != null) { this._updateModificationStoredProcedureConfiguration.Configure(modificationStoredProcedureMapping.UpdateFunctionMapping, providerManifest); } if (this._deleteModificationStoredProcedureConfiguration == null) { return; } this._deleteModificationStoredProcedureConfiguration.Configure(modificationStoredProcedureMapping.DeleteFunctionMapping, providerManifest); }
private void ConfigureModificationStoredProcedures( DbDatabaseMapping databaseMapping, EntityType entityType, DbProviderManifest providerManifest) { if (this._modificationStoredProceduresConfiguration == null) { return; } new ModificationFunctionMappingGenerator(providerManifest).Generate(entityType, databaseMapping); EntityTypeModificationFunctionMapping modificationStoredProcedureMapping = databaseMapping.GetEntitySetMappings().SelectMany <EntitySetMapping, EntityTypeModificationFunctionMapping>((Func <EntitySetMapping, IEnumerable <EntityTypeModificationFunctionMapping> >)(esm => (IEnumerable <EntityTypeModificationFunctionMapping>)esm.ModificationFunctionMappings)).SingleOrDefault <EntityTypeModificationFunctionMapping>((Func <EntityTypeModificationFunctionMapping, bool>)(mfm => mfm.EntityType == entityType)); if (modificationStoredProcedureMapping == null) { return; } this._modificationStoredProceduresConfiguration.Configure(modificationStoredProcedureMapping, providerManifest); }
public void Generate(EntityType entityType, DbDatabaseMapping databaseMapping) { DebugCheck.NotNull(entityType); DebugCheck.NotNull(databaseMapping); if (entityType.Abstract) { return; } var entitySet = databaseMapping.Model.GetEntitySet(entityType); Debug.Assert(entitySet != null); var entitySetMapping = databaseMapping.GetEntitySetMapping(entitySet); Debug.Assert(entitySetMapping != null); var columnMappings = GetColumnMappings(entityType, entitySetMapping).ToList(); var iaFkProperties = GetIndependentFkColumns(entityType, databaseMapping).ToList(); var insertFunctionMapping = GenerateFunctionMapping( ModificationOperator.Insert, entitySetMapping.EntitySet, entityType, databaseMapping, entityType.Properties, iaFkProperties, columnMappings, entityType .Properties .Where(p => p.HasStoreGeneratedPattern())); var updateFunctionMapping = GenerateFunctionMapping( ModificationOperator.Update, entitySetMapping.EntitySet, entityType, databaseMapping, entityType.Properties, iaFkProperties, columnMappings, entityType .Properties .Where(p => p.GetStoreGeneratedPattern() == StoreGeneratedPattern.Computed)); var deleteFunctionMapping = GenerateFunctionMapping( ModificationOperator.Delete, entitySetMapping.EntitySet, entityType, databaseMapping, entityType.Properties, iaFkProperties, columnMappings); var modificationStoredProcedureMapping = new EntityTypeModificationFunctionMapping( entityType, deleteFunctionMapping, insertFunctionMapping, updateFunctionMapping); entitySetMapping.AddModificationFunctionMapping(modificationStoredProcedureMapping); }