#pragma warning disable CS8618 // Non-nullable field is uninitialized. public TableMList(Type collectionType, ObjectName name, PrimaryKeyColumn primaryKey, FieldReference backReference) { this.Name = name; this.PrimaryKey = primaryKey; this.BackReference = backReference; this.CollectionType = collectionType; this.cache = new Lazy <IMListCache>(() => (IMListCache)giCreateCache.GetInvoker(this.Field.FieldType)(this)); }
public static PlainBufferCell ToPlainBufferCell(PrimaryKeyColumn primaryKeyColumn) { PlainBufferCell cell = new PlainBufferCell(); cell.SetCellName(primaryKeyColumn.Name); cell.SetPkCellValue(primaryKeyColumn.Value); return(cell); }
public EntityMapper(Type type) { var attributesOfClass = type.GetCustomAttributes(false); foreach (object attribute in attributesOfClass) { TableAttribute tableAttribute = attribute as TableAttribute; if (tableAttribute != null) { this.TableName = tableAttribute.TableName; } } foreach (var property in type.GetProperties()) { // TODO: add prop - field and field - prop dictionary string propOfEntity = property.Name; string columnOfTable = null; if (property.IsDefined(typeof(ColumnAttribute), false)) { var attributesOfProperty = property.GetCustomAttributes(false); foreach (object attribute in attributesOfProperty) { ColumnAttribute columnAttribute = attribute as ColumnAttribute; if (columnAttribute != null) { columnOfTable = columnAttribute.ColumnName; } } // TODO: add primary key } else if (property.IsDefined(typeof(PrimaryKeyColumn), false)) { var attributesOfProperty = property.GetCustomAttributes(false); foreach (object attribute in attributesOfProperty) { PrimaryKeyColumn primaryColumnAttribute = attribute as PrimaryKeyColumn; if (primaryColumnAttribute != null) { columnOfTable = primaryColumnAttribute.ColumnName; primaryKeyProperty.Add(propOfEntity, primaryColumnAttribute.ColumnType); } } } else { continue; } this.databaseToEntity.Add(columnOfTable, propOfEntity); this.entityToDatabase.Add(propOfEntity, columnOfTable); // TODO: add rule this.rules.Add(new PropertyMappingRule(propOfEntity, columnOfTable, MappingEngine.GetEngineFromName(MappingEngineType.TableField))); } }
//---------------------------------------------------------------------------------------------------- public static PrimaryKey PrimaryKey__Get(TableStructure tableStructure) { AjaxService.ASPdatabaseService.GetSetVal(); PrimaryKey rtn = null; var colDict = new Dictionary <string, Column>(); foreach (var item in tableStructure.Columns) { if (!colDict.ContainsKey(item.ColumnName.ToLower())) { colDict.Add(item.ColumnName.ToLower(), item); } } var primaryKeyColumns_List = new List <PrimaryKeyColumn>(); string sql = SQLServer_SQLBuilders.BuildSql__PrimaryKey_Select(tableStructure); using (DbConnectionCommand command = UniversalADO.OpenConnectionCommand(tableStructure.ConnectionId, sql)) { using (DbReaderWrapper reader = command.ExecuteReaderWrapper()) { while (reader.Read()) { if (rtn == null) { rtn = new PrimaryKey() { ConnectionId = tableStructure.ConnectionId, TableId = tableStructure.TableId, Schema = reader.Get("Schema", ""), TableName = reader.Get("TableName", ""), ConstraintName = reader.Get("ConstraintName", "") } } ; var primaryKeyItem = new PrimaryKeyColumn() { ColumnName = reader.Get("ColumnName", ""), OrdinalPosition = reader.Get("OrdinalPosition", 0) }; if (colDict.ContainsKey(primaryKeyItem.ColumnName.ToLower())) { primaryKeyItem.Identity = colDict[primaryKeyItem.ColumnName.ToLower()].Identity; } primaryKeyColumns_List.Add(primaryKeyItem); } } } if (rtn != null) { rtn.Columns = primaryKeyColumns_List.ToArray(); } return(rtn); }
public void CreatePrimaryKey( Dictionary <string, UserTable> userTables, Dictionary <string, PrimaryKeyColumn> primaryKeyColumns, IDataRecord reader) { var schemaName = Convert.ToString(reader[SchemaNameOrdinal]); var tableName = Convert.ToString(reader[TableNameOrdinal]); var objectName = Convert.ToString(reader[ObjectNameOrdinal]); var userTableNamespaceBuilder = new StringBuilder(schemaName.Length + tableName.Length + 1); userTableNamespaceBuilder.Append(schemaName). Append(Constants.Dot). Append(tableName); var userTableNamespace = userTableNamespaceBuilder.ToString(); if (!userTables.ContainsKey(userTableNamespace)) { return; } var userTable = userTables[userTableNamespace]; if (userTable == null) { return; } var primaryKeyNamespaceBuilder = new StringBuilder(userTableNamespace.Length + objectName.Length + 1); primaryKeyNamespaceBuilder.Append(userTableNamespace). Append(Constants.Dot). Append(objectName); var primaryKeyNamespace = primaryKeyNamespaceBuilder.ToString(); var primaryKey = userTable.PrimaryKeys[primaryKeyNamespace]; if (primaryKey == null) { primaryKey = new PrimaryKey { UserTable = userTable, ObjectName = objectName, FileGroup = Convert.ToString(reader[FileGroupOrdinal]), IgnoreDupKey = Convert.ToBoolean(reader[IgnoreDupKeyOrdinal]), IsClustered = Convert.ToBoolean(reader[IsClusteredOrdinal]), FillFactor = Convert.ToInt32(reader[FillFactorOrdinal]), IsPadded = Convert.ToBoolean(reader[IsPaddedOrdinal]), IsDisabled = Convert.ToBoolean(reader[IsDisabledOrdinal]), AllowRowLocks = Convert.ToBoolean(reader[AllowRowLocksOrdinal]), AllowPageLocks = Convert.ToBoolean(reader[AllowPageLocksOrdinal]), IndexType = Convert.ToString(reader[IndexTypeOrdinal]) // TODO: Remove this if possible... check other index code logic for usage (Mysql has BTREE, FULLTEXT, etc..., SQL Server doesn't) }; userTable.PrimaryKeys.Add(primaryKey); } // IsIncludedColumn should always be false for a primary key. var primaryKeyColumn = new PrimaryKeyColumn { PrimaryKey = primaryKey, ObjectName = Convert.ToString(reader[ColumnNameOrdinal]), IsDescendingKey = Convert.ToBoolean(reader[IsDescendingKeyOrdinal]), KeyOrdinal = Convert.ToInt32(reader[KeyOrdinalOrdinal]), PartitionOrdinal = Convert.ToInt32(reader[PartitionOrdinalOrdinal]) }; primaryKey.PrimaryKeyColumns.Add(primaryKeyColumn); primaryKeyColumns.Add(primaryKeyColumn.Namespace, primaryKeyColumn); }