Exemple #1
0
        /// <summary>
        /// Fetches the Column Definition for the specified columnid.
        /// </summary>
        /// <value>
        /// The <see cref="ColumnDefinition"/> for the specifed column identifier
        /// </value>
        /// <param name="columnid">The columnid.</param>
        /// <returns>The <see cref="ColumnDefinition"/> for the specified column identifier.</returns>
        public ColumnDefinition this[Columnid columnid]
        {
            get
            {
                if (this.database != null)
                {
                    lock (this.database.IsamSession)
                    {
                        if (this.cachedColumnDefinition != columnid.Name.ToLower(CultureInfo.InvariantCulture) ||
                            this.columnUpdateID != DatabaseCommon.SchemaUpdateID)
                        {
                            JET_COLUMNBASE columnBase;
                            Api.JetGetColumnInfo(
                                this.database.IsamSession.Sesid,
                                this.database.Dbid,
                                this.tableName,
                                columnid.Name,
                                out columnBase);
                            this.columnDefinition       = ColumnDefinition.Load(this.database, this.tableName, columnBase);
                            this.cachedColumnDefinition = columnid.Name.ToLower(CultureInfo.InvariantCulture);
                            this.columnUpdateID         = DatabaseCommon.SchemaUpdateID;
                        }

                        return(this.columnDefinition);
                    }
                }
                else
                {
                    return((ColumnDefinition)this.Dictionary[columnid.Name.ToLower(CultureInfo.InvariantCulture)]);
                }
            }
        }