private PlatformTableSourceInfo GetTableInfoColumnsAndKeys(TableSourceInfo tableSource, DatabaseInfo dbInfo) { // All versions use this code with the exception of 10g that uses GetTableInfo above. var tableSourceDetails = new PlatformTableSourceInfo(tableSource); tableSourceDetails.Columns = GetColumns(tableSource.ToEnumerable(), dbInfo); tableSourceDetails.ForeignKeys = GetForeignKeys(tableSource.ToEnumerable(), dbInfo); return(tableSourceDetails); }
private PlatformTableSourceInfo GetTableInfo(ITableSourceInfo tableSource) { TableSourceInfo tableSourceInfo = tableSource as TableSourceInfo; if (tableSourceInfo == null) { return(null); } PlatformTableSourceInfo tableSourceDetails = new PlatformTableSourceInfo(tableSourceInfo); tableSourceDetails.Columns = GetColumns(tableSourceInfo); tableSourceDetails.ForeignKeys = GetForeignKeys(tableSourceInfo); tableSourceDetails.Indexes = GetIndexes(tableSourceInfo, tableSourceDetails.Columns); tableSourceDetails.EventTrigger = Triggers.GetValueOrDefault(tableSourceInfo.Name.ToUpperInvariant()); return(tableSourceDetails); }
public IDictionary <ITableSourceInfo, IPlatformTableSourceInfo> GetTableSourcesDetails(params ITableSourceInfo[] tables) { var tablesDetails = new Dictionary <ITableSourceInfo, IPlatformTableSourceInfo>(); if (tables.IsEmpty()) { return(tablesDetails); } var dbInfo = (DatabaseInfo)databaseServices.ObjectFactory.CreateLocalDatabaseInfo(); if (UseSplitMethod()) { foreach (var tableSource in tables.OfType <TableSourceInfo>()) { tablesDetails.Add(tableSource, GetTableInfoColumnsAndKeys(tableSource, dbInfo)); } } else { var tableSourceList = tables.OfType <TableSourceInfo>().ToList(); var tableSourcesColumns = new Dictionary <string, IList <IPlatformTableSourceColumnInfo> >(); foreach (IPlatformTableSourceColumnInfo column in GetColumns(tableSourceList, dbInfo)) { string tableName = ((TableSourceInfo)column.TableSource).Name.ToUpperInvariant(); IList <IPlatformTableSourceColumnInfo> tableColumns; if (!tableSourcesColumns.TryGetValue(tableName, out tableColumns)) { tableColumns = new List <IPlatformTableSourceColumnInfo>(); tableSourcesColumns[tableName] = tableColumns; } tableColumns.Add(column); } var tableSourcesForeignKeys = new Dictionary <string, IList <ITableSourceForeignKeyInfo> >(); foreach (var foreignKey in GetForeignKeys(tableSourceList, dbInfo)) { string tableName = ((TableSourceInfo)foreignKey.TableSource).Name.ToUpperInvariant(); IList <ITableSourceForeignKeyInfo> tableFKeys; if (!tableSourcesForeignKeys.TryGetValue(tableName, out tableFKeys)) { tableFKeys = new List <ITableSourceForeignKeyInfo>(); tableSourcesForeignKeys[tableName] = tableFKeys; } tableFKeys.Add(foreignKey); } foreach (var tableSource in tableSourceList) { var info = new PlatformTableSourceInfo(tableSource); info.Columns = tableSourcesColumns.GetValueOrDefault(tableSource.Name.ToUpperInvariant()) ?? new List <IPlatformTableSourceColumnInfo>(); info.ForeignKeys = tableSourcesForeignKeys.GetValueOrDefault(tableSource.Name.ToUpperInvariant()) ?? new List <ITableSourceForeignKeyInfo>(); tablesDetails.Add(tableSource, info); } } InitializeIndexes(tablesDetails); InitializeTriggers(tablesDetails, dbInfo); return(tablesDetails); }