Пример #1
0
#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));
        }
Пример #2
0
        public static PlainBufferCell ToPlainBufferCell(PrimaryKeyColumn primaryKeyColumn)
        {
            PlainBufferCell cell = new PlainBufferCell();

            cell.SetCellName(primaryKeyColumn.Name);
            cell.SetPkCellValue(primaryKeyColumn.Value);
            return(cell);
        }
Пример #3
0
        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)));
            }
        }
Пример #4
0
        //----------------------------------------------------------------------------------------------------
        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);
        }
Пример #5
0
        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);
        }