Esempio n. 1
0
        internal object GetMemberIndex(MetaDataMember member)
        {
            MetaDataTable table = tablesHeap.GetTable(member.Table);
            uint          index = (uint)(member.metadatatoken - ((uint)table.Type << 24));

            return(ProcessIndex(table, index));
        }
        /// <summary>
        /// 使用OracleBulkCopy方式向表中批量添加数据。
        /// </summary>
        /// <param name="entities">记录集合</param>
        /// <param name="columnNames">目标表列名集合</param>
        /// <returns>0表示成功,其他失败</returns>
        protected virtual int InsertByBulkCopy(List <T> entities, params string[] columnNames)
        {
            if (entities == null || entities.Count == 0)
            {
                throw new ArgumentNullException("entites");
            }

            MetaDataTable metaDataTable = new MetaDataTable(typeof(T), this._tableName);
            DataTable     dataTable     = this.GetDataTable(entities, metaDataTable, columnNames);

            using (OracleBulkCopy bulkCopy = new OracleBulkCopy(this._connectionString))
            {
                bulkCopy.DestinationTableName = this._tableName;
                bulkCopy.BatchSize            = dataTable.Rows.Count;
                this.SetColumnMappings(bulkCopy.ColumnMappings, metaDataTable, columnNames);

                try
                {
                    bulkCopy.WriteToServer(dataTable);
                }
                catch (Exception ex)
                {
                    string message = string.Format("[SQL]:{0},[Exception]:{1}", "BulkCopy", ex.ToString());
                    throw new ApplicationException(message);
                }
            }

            return(0);
        }
Esempio n. 3
0
            public void should_convert_data_table_sheet1_with_metadata()
            {
                var importer = new Presentation.Services.Importer.Importer(_dataRepositoryMapper, _columnInfos, _importerTask, _dialogCreator);

                var metaData = new MetaDataTable();

                _importDataTable.MetaData = metaData;
                metaData.Columns.Add(new MetaDataColumn
                {
                    DataType     = typeof(string),
                    ColumnName   = "Column1",
                    DisplayName  = "DisplayColumn1",
                    Description  = "Text for Column1",
                    Required     = true,
                    ListOfValues = new Dictionary <string, string> {
                        { "A", "A" }, { "B", "B" }
                    },
                    IsListOfValuesFixed = true,
                    DefaultValue        = "A"
                });

                var tables = importer.ImportDataTables(_importDataTable, _excelFile, _sheetNames[0], _cms);

                tables[0].MetaData.Rows.Add((MetaDataRow)tables[0].MetaData.NewRow());
                bool errorNaN;
                var  dataRepositories = sut.ConvertImportDataTableList(tables, _columnInfos, out errorNaN);

                errorNaN.ShouldBeFalse();

                dataRepositories.Count.ShouldBeEqualTo(2);
                dataRepositories[0].ExtendedProperties.Contains(metaData.Columns.ItemByIndex(0).ColumnName).ShouldBeTrue();
                dataRepositories[0].ExtendedProperties[metaData.Columns.ItemByIndex(0).ColumnName].ValueAsObject.ShouldBeEqualTo(metaData.Columns.ItemByIndex(0).DefaultValue);
            }
Esempio n. 4
0
        /// <summary>
        /// 执行一条查询语句,并以实体对象集合形式返回查询结果集。
        /// </summary>
        /// <typeparam name="TEntity">实体类型</typeparam>
        /// <param name="sqlCmd">SQL命令</param>
        /// <param name="parameters">SQL参数对应值的集合,如果SQL语句字符串中含有参数标记,则必须设置该数组的值</param>
        /// <param name="commandType">CommandType</param>
        /// <param name="drToEntityAction">读出DataReader数据到DTO</param>
        /// <param name="columnNames">该实体对象中对应的数据库表的列名</param>
        /// <returns>实体对象集合</returns>
        protected virtual List <TEntity> GetEntities <TEntity>(string sqlCmd, OleDbParameter[] parameters, CommandType commandType,
                                                               Func <OleDbDataReader, MetaDataTable, string[], TEntity> drToEntityAction, params string[] columnNames)
        {
            List <TEntity> entities      = new List <TEntity>();
            var            metaDataTable = new MetaDataTable(typeof(TEntity), this._tableName);

            using (OleDbDataReader dr = OleDbHelper.ExecuteReader(this._connectionString, commandType, sqlCmd, parameters))
            {
                try
                {
                    do
                    {
                        while (dr.Read())
                        {
                            entities.Add(drToEntityAction(dr, metaDataTable, columnNames));
                        }
                    } while (dr.NextResult());
                }
                catch (Exception ex)
                {
                    string message = string.Format("[SQL]:{0},[Exception]:{1}", sqlCmd, ex.ToString());
                    System.Diagnostics.EventLog.WriteEntry("LightFramework.Data.OleDb", message);
                }
            }

            return(entities);
        }
            public static IEnumerable <string> AllTableSheetNames(XlsxPivotReader book)
            {
                var pivotWorkSheetNames = from n in book.WorksheetNames
                                          let name = n.ToLowerInvariant()
                                                     where
                                                     name.StartsWith(Prefix) &&
                                                     !PivotSheets.Equals(name) &&
                                                     !name.StartsWith(PivotData)
                                                     select n;
                var pivotSheetNames = from sheetName in pivotWorkSheetNames
                                      select book[sheetName].Entities <SheetNaming>();
                var pivotTableNames = from sheetNames in pivotSheetNames
                                      from sheetName in sheetNames
                                      select sheetName.Name;
                var allNames = (from n in pivotTableNames.Union(MetaDataTable.PivotTableSheets(book.MetaDataTables))
                                where !string.IsNullOrEmpty(n)
                                select n).Distinct(System.StringComparer.OrdinalIgnoreCase).ToList();

                if (allNames.Count > 0)
                {
                    return(allNames);
                }
                return(from n in book.WorksheetNames
                       where !n.ToLowerInvariant().StartsWith(SheetNaming.Prefix)
                       select n);
            }
        private bool setMetaData(MetaDataTable target, MetaDataTable source)
        {
            if (target == null)
            {
                return(true);
            }

            MetaDataRow newRow = (MetaDataRow)target.NewRow();

            for (var i = 0; i < newRow.ItemArray.Length; i++)
            {
                if (!source.Columns.ItemByIndex(i).IsColumnUsedForGrouping)
                {
                    newRow[i] = source.Rows.ItemByIndex(0)[i];
                }
            }

            if (target.Rows.Count == 0)
            {
                target.Rows.Add(newRow);
            }
            else
            {
                target.Rows.ItemByIndex(0).ItemArray = newRow.ItemArray;
            }
            target.AcceptChanges();
            return(false);
        }
Esempio n. 7
0
        private void tablesTree_AfterSelect(object sender, TreeViewEventArgs e)
        {
            dataGridView.Rows.Clear();
            if (e.Node.Tag is MetaDataTable)
            {
                MetaDataTable table = e.Node.Tag as MetaDataTable;
                if (e.Node.Nodes.Count == 1 && e.Node.Nodes[0].Text == "Loading...")
                {
                    e.Node.Nodes.Clear();
                    TreeNode[] subNodes = new TreeNode[table.Members.Count];
                    for (int i = 0; i < subNodes.Length; i++)
                    {
                        subNodes[i] = CreateTreeNode(table.Members[i]);
                    }

                    tablesTree.BeginUpdate();
                    e.Node.Nodes.AddRange(subNodes);
                    tablesTree.EndUpdate();
                }
            }
            else if (e.Node.Tag is MetaDataMember)
            {
                currentMember = (MetaDataMember)e.Node.Tag;
                propertyGrid.SelectedObject = currentMember;
                SetMetaDataRow(currentMember.MetaDataRow);
            }
        }
Esempio n. 8
0
        /// <summary>
        /// 使用SQLServer2008及以上版本表值参数方式向表中批量添加数据,需要先在数据库创建与目标表结构相同的表。
        /// 且表名必须为tvps。
        /// </summary>
        /// <param name="entities">记录集合</param>
        /// <param name="columnNames">目标表列名集合</param>
        /// <returns>影响行数</returns>
        protected virtual int InsertByTableValue(List <T> entities, params string[] columnNames)
        {
            if (entities == null || entities.Count == 0)
            {
                throw new ArgumentNullException("entites");
            }

            MetaDataTable metaDataTable = new MetaDataTable(typeof(T), this._tableName);

            using (SqlConnection conn = new SqlConnection(this._connectionString))
            {
                string       sql   = string.Format("insert into {0} select * from @tableName;", this._tableName);
                SqlCommand   cmd   = new SqlCommand(sql, conn);
                SqlParameter param = cmd.Parameters.AddWithValue("@tableName", this.GetDataTable(entities, metaDataTable, columnNames));
                param.SqlDbType = SqlDbType.Structured;
                param.TypeName  = "dbo.tvps";

                try
                {
                    conn.Open();
                    return(cmd.ExecuteNonQuery());
                }
                catch (Exception ex)
                {
                    string message = string.Format("[SQL]:{0},[Exception]:{1}", "TableValueParameter", ex.ToString());
                    throw new ApplicationException(message);
                }
            }
        }
Esempio n. 9
0
        internal void ReadTableHeaders()
        {
            SetupCodedIndexes();

            for (int i = 0; i < 45; i++)
            {
                if (tablesHeap.HasTable((MetaDataTableType)i))
                {
                    long          headerOffset = reader.BaseStream.Position + tablesHeap.StreamOffset;
                    MetaDataTable table        = CreateTable((MetaDataTableType)i, reader.ReadInt32(), headerOffset);

                    tablesHeap.tables[i] = table;
                }
            }

            uint tableOffset = (uint)(tablesHeap.StreamOffset + Marshal.SizeOf(typeof(Structures.METADATA_TABLE_HEADER)) + (tablesHeap.tablecount) * 4);

            foreach (MetaDataTable table in tablesHeap.tables)
            {
                if (table != null)
                {
                    table.TableOffset = tableOffset;
                    tableOffset      += (uint)table.PhysicalSize;
                }
            }
        }
Esempio n. 10
0
        /// <summary>
        /// Get meta data from a SQL statement
        /// </summary>
        /// <param name="connectionString">Connection string to use</param>
        /// <param name="entityName">Name of the entity class</param>
        /// /// <param name="cmd">Current command to get meta data for</param>
        /// <param name="nameOfPrimaryKeyField">Name of the primary key field. Default: null</param>
        public override void GetMetaData(string connectionString, string entityName, DbCommand cmd, string nameOfPrimaryKeyField = null)
        {
            if (string.IsNullOrEmpty(nameOfPrimaryKeyField))
            {
                nameOfPrimaryKeyField = "CustomerId";
            }

            var table = new MetaDataTable
            {
                Name = entityName,
                Sql  = "SELECT * FROM Customer"
            };

            var f = new MetaDataField
            {
                Name         = nameOfPrimaryKeyField,
                DatabaseType = typeof(int)
            };

            f.SourceDataType = f.DatabaseType.ToString();

            table.Fields.Add(f);

            f = new MetaDataField
            {
                Name         = "Customer",
                DatabaseType = typeof(string)
            };
            f.SourceDataType = f.DatabaseType.ToString();

            table.Fields.Add(f);


            Table = table;
        }
Esempio n. 11
0
        private void ReorderRange <TParent, TMember>(Workspace workspace, MetaDataTableType parentTable, MetaDataTableType memberTable, int memberListIndex, Func <TParent, TMember[]> getMembersFunc)
            where TParent : MetaDataMember
            where TMember : MetaDataMember
        {
            if (workspace.Members.ContainsKey(parentTable) && workspace.Members.ContainsKey(memberTable))
            {
                MetaDataMemberInfo[] newRange      = new MetaDataMemberInfo[workspace.Members[memberTable].Length];
                TParent[]            parentMembers = workspace.GetMembers <TParent>(parentTable);
                MetaDataTable        targetTable   = workspace.Members[memberTable][0].Instance.Table;

                uint currentIndex = 0;

                for (int i = 0; i < parentMembers.Length; i++)
                {
                    TMember[] members = getMembersFunc(parentMembers[i]);

                    if (members.Length > 0)
                    {
                        int startIndex = workspace.GetIndexOfMember(members[0]);
                        int endIndex   = workspace.GetIndexOfMember(members[members.Length - 1]);

                        Array.Copy(workspace.Members[memberTable], startIndex, newRange, currentIndex, endIndex - startIndex + 1);
                    }

                    parentMembers[i].MetaDataRow.Parts[memberListIndex] = ConvertToIndex(targetTable, currentIndex + 1);

                    currentIndex += (uint)members.Length;
                }

                workspace.Members[memberTable] = newRange;
            }
        }
Esempio n. 12
0
        private void ExtractInitialData()
        {
            FileInfo fi            = new FileInfo(FileName);
            string   fullName      = fi.FullName;
            string   name          = fi.Name;
            string   directoryName = fi.DirectoryName;
            bool     isReadOnly    = fi.IsReadOnly;
            string   readOnly;

            if (isReadOnly == true)
            {
                readOnly = "True";
            }
            else
            {
                readOnly = "False";
            }

            string utcCreationTime = fi.CreationTimeUtc.ToString("yyyy-MM-dd HH:mm:ss");
            string extension       = fi.Extension;
            string utcLastAccessed = fi.LastAccessTimeUtc.ToString("yyyy-MM-dd HH:mm:ss");
            string utcLastWrite    = fi.LastWriteTimeUtc.ToString("yyyy-MM-dd HH:mm:ss");
            string FileLength      = fi.Length.ToString("N0");

            MetaDataTable.Rows.Add("BasicData", "Full Name", fullName);
            MetaDataTable.Rows.Add("BasicData", "Name", name);
            MetaDataTable.Rows.Add("BasicData", "Directory Name", directoryName);
            MetaDataTable.Rows.Add("BasicData", "Is Read Only", readOnly);
            MetaDataTable.Rows.Add("BasicData", "UTC Creation Time", utcCreationTime);
            MetaDataTable.Rows.Add("BasicData", "UTC Last Access Time", utcLastAccessed);
            MetaDataTable.Rows.Add("BasicData", "UTC Last Write Time", utcLastWrite);
            MetaDataTable.Rows.Add("BasicData", "File Extension", extension);
            MetaDataTable.Rows.Add("BasicData", "File Length Bytes", FileLength);
            MetaDataTable.AcceptChanges();
        }
Esempio n. 13
0
 public List <MetaDataTable> GetMetaTables()
 {
     try
     {
         List <MetaDataTable> tables = new List <MetaDataTable>();
         navConnection.Open();
         using (SqlCommand command = new SqlCommand("select top 20 [TABLE_NAME], [TABLE_TYPE] from INFORMATION_SCHEMA.TABLES", navConnection))
         {
             using (SqlDataReader reader = command.ExecuteReader())
             {
                 while (reader.Read())
                 {
                     MetaDataTable tmp = new MetaDataTable
                     {
                         Table_Name = reader.GetValue(0) as string,
                         Table_Type = reader.GetValue(1) as string
                     };
                     tables.Add(tmp);
                 }
             }
         }
         navConnection.Close();
         return(tables);
     }
     catch (Exception e)
     {
         throw ExceptionHandler.HandleEFException(e);
     }
     finally
     {
         navConnection.Close();
     }
 }
Esempio n. 14
0
        /// <summary>
        /// 执行一条查询语句,并以实体对象集合形式返回查询结果集。
        /// </summary>
        /// <typeparam name="TEntity">实体类型</typeparam>
        /// <param name="sqlCmd">SQL命令</param>
        /// <param name="parameters">SQL参数对应值的集合,如果SQL语句字符串中含有参数标记,则必须设置该数组的值</param>
        /// <param name="commandType">CommandType</param>
        /// <param name="drToEntityAction">读出DataReader数据到DTO</param>
        /// <param name="columnNames">该实体对象中对应的数据库表的列名</param>
        /// <returns>实体对象集合</returns>
        protected virtual List <TEntity> GetEntities <TEntity>(string sqlCmd, SqlParameter[] parameters, CommandType commandType,
                                                               Func <SqlDataReader, MetaDataTable, string[], TEntity> drToEntityAction, params string[] columnNames)
        {
            List <TEntity> entities      = new List <TEntity>();
            var            metaDataTable = new MetaDataTable(typeof(TEntity), this._tableName);

            using (SqlDataReader dr = SqlHelper.ExecuteReader(this._connectionString, commandType, sqlCmd, parameters))
            {
                try
                {
                    do
                    {
                        while (dr.Read())
                        {
                            entities.Add(drToEntityAction(dr, metaDataTable, columnNames));
                        }
                    } while (dr.NextResult());
                }
                catch (SqlException ex)
                {
                    throw new ApplicationException(string.Format("[SQL]:{0},[Exception]:{1}", sqlCmd, ex.ToString()));
                }
            }

            return(entities);
        }
Esempio n. 15
0
        /// <summary>
        ///    This method converts a list of meta data categories to a meta data table.
        /// </summary>
        /// <param name="metaDataCategories">List of meta data categories.</param>
        /// <returns>A meta data table.</returns>
        private static MetaDataTable convertToMetaDataTable(IEnumerable <MetaDataCategory> metaDataCategories)
        {
            var retVal = new MetaDataTable();

            foreach (var metaDataCategory in metaDataCategories)
            {
                var column = new MetaDataColumn
                {
                    ColumnName          = metaDataCategory.Name,
                    DisplayName         = metaDataCategory.DisplayName,
                    Description         = metaDataCategory.Description,
                    ListOfValues        = metaDataCategory.ListOfValues,
                    ListOfImages        = metaDataCategory.ListOfImages,
                    IsListOfValuesFixed = metaDataCategory.IsListOfValuesFixed,
                    MinValue            = metaDataCategory.MinValue,
                    MinValueAllowed     = metaDataCategory.MinValueAllowed,
                    MaxValue            = metaDataCategory.MaxValue,
                    MaxValueAllowed     = metaDataCategory.MaxValueAllowed,
                    Required            = metaDataCategory.IsMandatory,
                    DataType            = metaDataCategory.MetaDataType,
                    DefaultValue        = metaDataCategory.DefaultValue
                };

                if (metaDataCategory.MetaDataType == typeof(string))
                {
                    column.MaxLength = metaDataCategory.MaxLength;
                }

                retVal.Columns.Add(column);
            }

            return(retVal);
        }
Esempio n. 16
0
 private ValueType ConvertToIndex(MetaDataTable table, uint index)
 {
     if (table.IsLarge(0))
     {
         return(index);
     }
     return((ushort)index);
 }
Esempio n. 17
0
 private NumberIdSeq DataReaderToNumberIdSeq(MySqlDataReader dr, MetaDataTable metaDataTable, params string[] columnNames)
 {
     if (dr == null)
     {
         throw new ArgumentNullException("dr", "未将对象引用到实例");
     }
     return(EntityMapper.GetEntity <NumberIdSeq>(dr, new NumberIdSeq(), this._tableName));
 }
Esempio n. 18
0
 private DimensionNumberType DataReaderToNumberTypeDim(SqlDataReader dr, MetaDataTable metaDataTable, params string[] columnNames)
 {
     if (dr == null)
     {
         throw new ArgumentNullException("dr", "未将对象引用到实例");
     }
     return(EntityMapper.GetEntity <DimensionNumberType>(dr, new DimensionNumberType(), this._tableName));
 }
Esempio n. 19
0
 protected override DwNumber DataReaderToEntity(MySqlDataReader dr, MetaDataTable metaDataTable, params string[] columnNames)
 {
     if (dr == null)
     {
         throw new ArgumentNullException("dr", "未将对象引用到实例");
     }
     return(EntityMapper.GetEntity <DwNumber>(dr, new DwNumber(), this._tableName));
 }
Esempio n. 20
0
        /// <summary>
        /// 将DataReader的属性值转化为实体类的属性值,返回实体类
        /// </summary>
        /// <param name="dr">有效的DataReader对象</param>
        /// <param name="columnNames">该数据传输对象中对应的数据库表的字段(列)名</param>
        /// <returns>数据传输对象实例</returns>
        protected override DimensionNumberType DataReaderToEntity(SqlDataReader dr, MetaDataTable metaDataTable, params string[] columnNames)
        {
            if (dr == null)
            {
                throw new ArgumentNullException("dr", "未将对象引用到实例");
            }

            return(EntityMapper.GetEntity(dr, new DimensionNumberType(), DimensionNumberType.ENTITYNAME));
        }
Esempio n. 21
0
        /// <summary>
        /// 将DataReader的属性值转化为实体类的属性值,返回实体类
        /// </summary>
        /// <param name="dr">有效的DataReader对象</param>
        /// <param name="columnNames">该数据传输对象中对应的数据库表的字段(列)名</param>
        /// <returns>数据传输对象实例</returns>
        protected override OmissionValue DataReaderToEntity(MySqlDataReader dr, MetaDataTable metaDataTable, params string[] columnNames)
        {
            if (dr == null)
            {
                throw new ArgumentNullException("dr", "未将对象引用到实例");
            }

            return(EntityMapper.GetEntity(dr, new OmissionValue(), OmissionValue.ENTITYNAME));
        }
Esempio n. 22
0
        protected override CategoryDTO DataReaderToEntity(MySqlDataReader dr, MetaDataTable metaDataTable, params string[] columnNames)
        {
            if (dr == null)
            {
                throw new ArgumentNullException("dr", "未将对象引用到实例");
            }

            return(EntityMapper.GetEntity(dr, new CategoryDTO(), metaDataTable));
        }
Esempio n. 23
0
        private byte GetIndexSize(MetaDataTableType type)
        {
            MetaDataTable table = tablesHeap.Tables[(int)type];

            if (table != null && table.IsLarge(0))
            {
                return(sizeof(uint));
            }
            return(sizeof(ushort));
        }
Esempio n. 24
0
        private void ExtractExtendedData()
        {
            //Dictionary<int, KeyValuePair<string, string>> metadataProperties = GetFileProperties();
            List <KeyValuePair <string, string> > propertyList = GetExtendedDataProperties();

            foreach (KeyValuePair <string, string> property in propertyList)
            {
                MetaDataTable.Rows.Add("ExtendedData", property.Key, property.Value);
                MetaDataTable.AcceptChanges();
            }
        }
Esempio n. 25
0
 internal object ProcessIndex(MetaDataTable table, uint index)
 {
     if (table == null || !table.IsLarge(0))
     {
         return((ushort)index);
     }
     else
     {
         return(index);
     }
 }
        public void SetMetaDataForColumn(MetaDataTable metaDataTable, string columnName)
        {
            if (!_table.Columns.ContainsName(columnName))
            {
                return;
            }
            var column = _table.Columns.ItemByName(columnName);

            setMetaData(column.MetaData, metaDataTable);

            ReflectMetaDataChangesForColumn(column);
        }
Esempio n. 27
0
        private void AddTables()
        {
            // use reflection to find all ControlTable derivatives...
            Type[] tableTypes = GetControlTableTypes();

            // create an instance of each table and add to the table builder...
            foreach (var tableType in tableTypes)
            {
                MetaDataTable t = (MetaDataTable)Activator.CreateInstance(tableType);
                AddTable(t);
            }
        }
Esempio n. 28
0
        internal void SetMetaDataForTable(MetaDataTable metaData)
        {
            if (_metaDataControl == null)
            {
                return;
            }

            _gridPresenter.SetMetaDataForTable(metaData);
            MetaDataChanged?.Invoke(this, new EventArgs());

            _metaDataControl.RefreshData(0);
        }
Esempio n. 29
0
        /// <summary>
        /// This method opens an edit dialog for meta data.
        /// </summary>
        /// <param name="metaData">Meta data to be edited.</param>
        /// <param name="column">Grid column of column the meta data belong to.</param>
        private void openEditMetaDataForColumn(MetaDataTable metaData, GridColumn column)
        {
            var icon = (ParentForm == null) ? ApplicationIcons.EmptyIcon : ParentForm.Icon;
            var frm  = new EditMetaDataView(metaData)
            {
                StartPosition = FormStartPosition.CenterParent, Icon = icon
            };

            frm.OnCopyMetaData += (o, e) => OnEvent(() => onCopyMetaDataColumnControl(metaData, column));
            if (frm.ShowDialog() == DialogResult.OK)
            {
                _presenter.SetMetaDataForColumn(metaData, column.FieldName);
            }
        }
        /// <summary>
        /// 创建实体集合对应的DataTable对象
        /// </summary>
        /// <param name="metaDataTable">MetaDataTable对象</param>
        /// <param name="entities">实体记录集合</param>
        /// <param name="columnNames">目标表列名集合</param>
        /// <returns>DataTable对象</returns>
        private DataTable GetDataTable(List <T> entities, MetaDataTable metaDataTable, params string[] columnNames)
        {
            DataTable dataTable = new DataTable(this._tableName);

            this.SetDataColumns(dataTable, metaDataTable, columnNames);

            foreach (T entity in entities)
            {
                DataRow dr = dataTable.NewRow();
                foreach (DataColumn dataColumn in dataTable.Columns)
                {
                    var metaDataColumn = metaDataTable.Columns[dataColumn.ColumnName];
                    dr[dataColumn.ColumnName] = metaDataColumn.Member.GetValue(entity, null);
                }
                dataTable.Rows.Add(dr);
            }
            return(dataTable);
        }
Esempio n. 31
0
 public void AddTable(MetaDataTableType type)
 {
     MetaDataTable table = new MetaDataTable(this, true);
     table._type = type;
     _tables[(int)type] = table;
     MaskValid |= ((ulong)1 << (int)type);
 }
 protected void Setup()
 {
     CategoryDTO category = new CategoryDTO();
     this._metaDataTable = new MetaDataTable(category.GetType(), CategoryDTO.ENTITYNAME);
 }
 protected void Dispose()
 {
     this._metaDataTable = null;
 }
Esempio n. 34
0
        private bool GetRowAndType(BinaryReader reader, MetaDataTable table, out MetaDataRow row, out Type type)
        {
            type = null;
            row = default(MetaDataRow);

            switch (table.Type)
            {
                case MetaDataTableType.Module:
                    row = ReadRow(reader, GetModuleSignature()); type = typeof(ModuleDefinition); break;
                case MetaDataTableType.TypeRef:
                    row = ReadRow(reader, GetTypeRefSignature()); type = typeof(TypeReference); break;
                case MetaDataTableType.TypeDef:
                    row = ReadRow(reader, GetTypeDefSignature()); type = typeof(TypeDefinition); break;
                case MetaDataTableType.FieldPtr:
                    row = ReadRow(reader, GetFieldPtrSignature()); type = typeof(FieldPtr); break;
                case MetaDataTableType.Field:
                    row = ReadRow(reader, GetFieldDefSignature()); type = typeof(FieldDefinition); break;
                case MetaDataTableType.MethodPtr:
                    row = ReadRow(reader, GetMethodPtrSignature()); type = typeof(MethodPtr); break;
                case MetaDataTableType.Method:
                    row = ReadRow(reader, GetMethodDefSignature()); type = typeof(MethodDefinition); break;
                case MetaDataTableType.ParamPtr:
                    row = ReadRow(reader, GetParamPtrSignature()); type = typeof(ParamPtr); break;
                case MetaDataTableType.Param:
                    row = ReadRow(reader, GetParamDefSignature()); type = typeof(ParameterDefinition); break;
                case MetaDataTableType.InterfaceImpl:
                    row = ReadRow(reader, GetInterfaceImplSignature()); type = typeof(InterfaceImplementation); break;
                case MetaDataTableType.MemberRef:
                    row = ReadRow(reader, GetMemberRefSignature());
                    tablesHeap._netheader.BlobHeap._mainStream.Seek(Convert.ToUInt32(row._parts[2]), SeekOrigin.Begin);
                    tablesHeap._netheader.BlobHeap._binReader.ReadByte();
                    byte sigtype = tablesHeap._netheader.BlobHeap._binReader.ReadByte();

                    if (sigtype == 0x6)
                        type = typeof(FieldReference);
                    else
                        type = typeof(MethodReference);

                    break;
                case MetaDataTableType.Constant:
                    row = ReadRow(reader, GetConstantSignature()); type = typeof(Constant); break;
                case MetaDataTableType.CustomAttribute:
                    row = ReadRow(reader, GetCustomAttributeSignature()); type = typeof(CustomAttribute); break;
                case MetaDataTableType.FieldMarshal:
                    row = ReadRow(reader, GetFieldMarshalSignature()); type = typeof(FieldMarshal); break;
                case MetaDataTableType.DeclSecurity:
                    row = ReadRow(reader, GetSecurityDeclSignature()); type = typeof(SecurityDeclaration); break;
                case MetaDataTableType.ClassLayout:
                    row = ReadRow(reader, GetClassLayoutSignature()); type = typeof(ClassLayout); break;
                case MetaDataTableType.FieldLayout:
                    row = ReadRow(reader, GetFieldLayoutSignature()); type = typeof(FieldLayout); break;
                case MetaDataTableType.StandAloneSig:
                    row = ReadRow(reader, GetStandAloneSigSignature()); type = typeof(StandAloneSignature); break;
                case MetaDataTableType.EventMap:
                    row = ReadRow(reader, GetEventMapSignature()); type = typeof(EventMap); break;
                case MetaDataTableType.Event:
                    row = ReadRow(reader, GetEventDefSignature()); type = typeof(EventDefinition); break;
                case MetaDataTableType.PropertyMap:
                    row = ReadRow(reader, GetPropertyMapSignature()); type = typeof(PropertyMap); break;
                case MetaDataTableType.PropertyPtr:
                    row = ReadRow(reader, GetPropertyPtrSignature()); type = typeof(PropertyPtr); break;
                case MetaDataTableType.Property:
                    row = ReadRow(reader, GetPropertyDefSignature()); type = typeof(PropertyDefinition); break;
                case MetaDataTableType.MethodSemantics:
                    row = ReadRow(reader, GetMethodSemanticsSignature()); type = typeof(MethodSemantics); break;
                case MetaDataTableType.MethodImpl:
                    row = ReadRow(reader, GetMethodImplSignature()); type = typeof(MethodImplementation); break;
                case MetaDataTableType.ModuleRef:
                    row = ReadRow(reader, GetModuleRefSignature()); type = typeof(ModuleReference); break;
                case MetaDataTableType.TypeSpec:
                    row = ReadRow(reader, GetTypeSpecSignature()); type = typeof(TypeSpecification); break;
                case MetaDataTableType.MethodSpec:
                    row = ReadRow(reader, GetMethodSpecSignature()); type = typeof(MethodSpecification); break;
                case MetaDataTableType.ImplMap:
                    row = ReadRow(reader, GetPInvokeImplSignature()); type = typeof(PInvokeImplementation); break;
                case MetaDataTableType.FieldRVA:
                    row = ReadRow(reader, GetFieldRVASignature()); type = typeof(FieldRVA); break;
                case MetaDataTableType.Assembly:
                    row = ReadRow(reader, GetAssemblyDefSignature()); type = typeof(AssemblyDefinition); break;
                case MetaDataTableType.AssemblyProcessor:
                    row = ReadRow(reader, GetAssemblyProcSignature()); type = typeof(AssemblyProcessor); break;
                case MetaDataTableType.AssemblyOS:
                    row = ReadRow(reader, GetAssemblyOSSignature()); type = typeof(AssemblyOS); break;
                case MetaDataTableType.AssemblyRef:
                    row = ReadRow(reader, GetAssemblyRefSignature()); type = typeof(AssemblyReference); break;
                case MetaDataTableType.AssemblyRefProcessor:
                    row = ReadRow(reader, GetAssemblyRefProcSignature()); type = typeof(AssemblyRefProcessor); break;
                case MetaDataTableType.AssemblyRefOS:
                    row = ReadRow(reader, GetAssemblyRefOSSignature()); type = typeof(AssemblyRefOS); break;
                case MetaDataTableType.File:
                    row = ReadRow(reader, GetFileReferenceSignature()); type = typeof(File); break;
                case MetaDataTableType.ExportedType:
                    row = ReadRow(reader, GetExportedTypeSignature()); type = typeof(ExportedType); break;
                case MetaDataTableType.ManifestResource:
                    row = ReadRow(reader, GetManifestResSignature()); type = typeof(ManifestResource); break;
                case MetaDataTableType.NestedClass:
                    row = ReadRow(reader, GetNestedClassSignature()); type = typeof(NestedClass); break;
                case MetaDataTableType.EncLog:
                    row = ReadRow(reader, GetEnCLogSignature()); type = typeof(EnCLog); break;
                case MetaDataTableType.EncMap:
                    row = ReadRow(reader, GetEnCMapSignature()); type = typeof(EnCMap); break;
                case MetaDataTableType.GenericParam:
                    row = ReadRow(reader, GetGenericParamSignature()); type = typeof(GenericParameter); break;
                case MetaDataTableType.GenericParamConstraint:
                    row = ReadRow(reader, GetGenericParamConstraintSignature()); type = typeof(GenericParamConstraint); break;

            }

            return type != null;
        }
Esempio n. 35
0
 internal MetaRow(System.Data.DataRowBuilder builder) : 
         base(builder) {
     this.tableMeta = ((MetaDataTable)(this.Table));
 }
Esempio n. 36
0
        internal MetaDataTable CreateTable(MetaDataTableType type, int rowAmount, long rowAmountOffset)
        {
            //customattribute[permission]?

            MetaDataTable table = new MetaDataTable(tablesHeap, false);
            table.Type = type;
            table._rowAmount = rowAmount;
            table._rowAmountOffset = rowAmountOffset;
            switch (type)
            {
                case MetaDataTableType.Assembly:
                    tablesHeap.HasCustomAttribute[14] = table;
                    tablesHeap.HasDeclSecurity[2] = table;
                    break;
                case MetaDataTableType.AssemblyRef:
                    tablesHeap.HasCustomAttribute[15] = table;
                    tablesHeap.Implementation[1] = table;
                    tablesHeap.ResolutionScope[2] = table;
                    break;
                case MetaDataTableType.Event:
                    tablesHeap.HasCustomAttribute[10] = table;
                    tablesHeap.HasSemantics[0] = table;
                    break;
                case MetaDataTableType.ExportedType:
                    tablesHeap.HasCustomAttribute[17] = table;
                    tablesHeap.Implementation[2] = table;
                    break;
                case MetaDataTableType.Field:
                    tablesHeap.HasConstant[0] = table;
                    tablesHeap.HasCustomAttribute[1] = table;
                    tablesHeap.HasFieldMarshall[0] = table;
                    tablesHeap.MemberForwarded[0] = table;
                    break;
                case MetaDataTableType.File:
                    tablesHeap.HasCustomAttribute[16] = table;
                    tablesHeap.Implementation[0] = table;
                    break;
                case MetaDataTableType.GenericParam:
                    tablesHeap.HasCustomAttribute[19] = table;
                    break;
                case MetaDataTableType.GenericParamConstraint:
                    tablesHeap.HasCustomAttribute[20] = table;
                    break;
                case MetaDataTableType.InterfaceImpl:
                    tablesHeap.HasCustomAttribute[5] = table;
                    break;
                case MetaDataTableType.ManifestResource:
                    tablesHeap.HasCustomAttribute[18] = table;
                    break;
                case MetaDataTableType.MemberRef:
                    tablesHeap.HasCustomAttribute[6] = table;
                    tablesHeap.MethodDefOrRef[1] = table;
                    tablesHeap.CustomAttributeType[3] = table;
                    break;
                case MetaDataTableType.Method:
                    tablesHeap.HasCustomAttribute[0] = table;
                    tablesHeap.HasDeclSecurity[1] = table;
                    tablesHeap.MemberRefParent[3] = table;
                    tablesHeap.MethodDefOrRef[0] = table;
                    tablesHeap.MemberForwarded[1] = table;
                    tablesHeap.CustomAttributeType[2] = table;
                    tablesHeap.TypeOrMethod[1] = table;
                    break;
                case MetaDataTableType.MethodSpec:
                    tablesHeap.HasCustomAttribute[21] = table;
                    break;
                case MetaDataTableType.Module:
                    tablesHeap.HasCustomAttribute[7] = table;
                    tablesHeap.ResolutionScope[0] = table;
                    break;
                case MetaDataTableType.ModuleRef:
                    tablesHeap.HasCustomAttribute[12] = table;
                    tablesHeap.MemberRefParent[2] = table;
                    tablesHeap.ResolutionScope[1] = table;
                    break;
                case MetaDataTableType.Param:
                    tablesHeap.HasConstant[1] = table;
                    tablesHeap.HasCustomAttribute[4] = table;
                    tablesHeap.HasFieldMarshall[1] = table;
                    break;
                case MetaDataTableType.Property:
                    tablesHeap.HasConstant[2] = table;
                    tablesHeap.HasCustomAttribute[9] = table;
                    tablesHeap.HasSemantics[1] = table;
                    break;
                case MetaDataTableType.StandAloneSig:
                    tablesHeap.HasCustomAttribute[11] = table;
                    break;
                case MetaDataTableType.TypeDef:
                    tablesHeap.TypeDefOrRef[0] = table;
                    tablesHeap.HasCustomAttribute[3] = table;
                    tablesHeap.HasDeclSecurity[0] = table;
                    tablesHeap.MemberRefParent[0] = table;
                    tablesHeap.TypeOrMethod[0] = table;
                    break;
                case MetaDataTableType.TypeRef:
                    tablesHeap.TypeDefOrRef[1] = table;
                    tablesHeap.HasCustomAttribute[2] = table;
                    tablesHeap.MemberRefParent[1] = table;
                    tablesHeap.ResolutionScope[3] = table;
                    break;
                case MetaDataTableType.TypeSpec:
                    tablesHeap.TypeDefOrRef[2] = table;
                    tablesHeap.HasCustomAttribute[13] = table;
                    tablesHeap.MemberRefParent[4] = table;
                    break;
            }
            return table;
        }
Esempio n. 37
0
 internal void InitializeClass() {
     this.DataSetName = "SuposDataSet";
     this.Prefix = "";
     this.Namespace = "http://tempuri.org/TestDataSet.xsd";
     this.Locale = new System.Globalization.CultureInfo("fr-BE");
     this.CaseSensitive = false;
     this.EnforceConstraints = true;
     this.__tableCategories = new CategoriesDataTable();
     this.Tables.Add(this.__tableCategories);
     this.__tableProducts = new ProductsDataTable();
     this.Tables.Add(this.__tableProducts);
     this.__tableTaxes = new TaxesDataTable();
     this.Tables.Add(this.__tableTaxes);
     this.__tableCustomers = new CustomersDataTable();
     this.Tables.Add(this.__tableCustomers);
     this.__tableOrders = new OrdersDataTable();
     this.Tables.Add(this.__tableOrders);
     this.__tableOrderDetails = new OrderDetailsDataTable();
     this.Tables.Add(this.__tableOrderDetails);
     this.__tablePayments = new PaymentsDataTable();
     this.Tables.Add(this.__tablePayments);
     this.__tableMeta = new MetaDataTable();
     this.Tables.Add(this.__tableMeta);
     System.Data.UniqueConstraint uc;
     uc = new System.Data.UniqueConstraint("PK_Categories", new System.Data.DataColumn[] {
                 this.__tableCategories.Columns["Id"]}, true);
     this.__tableCategories.Constraints.Add(uc);
     uc = new System.Data.UniqueConstraint("PK_Products", new System.Data.DataColumn[] {
                 this.__tableProducts.Columns["Id"]}, true);
     this.__tableProducts.Constraints.Add(uc);
     uc = new System.Data.UniqueConstraint("PK_Taxes", new System.Data.DataColumn[] {
                 this.__tableTaxes.Columns["Id"]}, true);
     this.__tableTaxes.Constraints.Add(uc);
     uc = new System.Data.UniqueConstraint("PK_Clients", new System.Data.DataColumn[] {
                 this.__tableCustomers.Columns["Id"]}, true);
     this.__tableCustomers.Constraints.Add(uc);
     uc = new System.Data.UniqueConstraint("PK_Orders", new System.Data.DataColumn[] {
                 this.__tableOrders.Columns["Id"]}, true);
     this.__tableOrders.Constraints.Add(uc);
     uc = new System.Data.UniqueConstraint("PK_OrderDetails", new System.Data.DataColumn[] {
                 this.__tableOrderDetails.Columns["Id"]}, true);
     this.__tableOrderDetails.Constraints.Add(uc);
     uc = new System.Data.UniqueConstraint("PK_Payment", new System.Data.DataColumn[] {
                 this.__tablePayments.Columns["Id"]}, true);
     this.__tablePayments.Constraints.Add(uc);
     uc = new System.Data.UniqueConstraint("PK_Meta", new System.Data.DataColumn[] {
                 this.__tableMeta.Columns["Id"]}, true);
     this.__tableMeta.Constraints.Add(uc);
     System.Data.ForeignKeyConstraint fkc;
     fkc = new System.Data.ForeignKeyConstraint("FK_Categories_Products", new System.Data.DataColumn[] {
                 this.__tableCategories.Columns["Id"]}, new System.Data.DataColumn[] {
                 this.__tableProducts.Columns["CategoryId"]});
     fkc.AcceptRejectRule = System.Data.AcceptRejectRule.None;
     fkc.DeleteRule = System.Data.Rule.Cascade;
     fkc.UpdateRule = System.Data.Rule.Cascade;
     this.__tableProducts.Constraints.Add(fkc);
     fkc = new System.Data.ForeignKeyConstraint("FK_Taxes_Products", new System.Data.DataColumn[] {
                 this.__tableTaxes.Columns["Id"]}, new System.Data.DataColumn[] {
                 this.__tableProducts.Columns["DefaultTaxId"]});
     fkc.AcceptRejectRule = System.Data.AcceptRejectRule.None;
     fkc.DeleteRule = System.Data.Rule.Cascade;
     fkc.UpdateRule = System.Data.Rule.Cascade;
     this.__tableProducts.Constraints.Add(fkc);
     fkc = new System.Data.ForeignKeyConstraint("FK_Customers_Orders", new System.Data.DataColumn[] {
                 this.__tableCustomers.Columns["Id"]}, new System.Data.DataColumn[] {
                 this.__tableOrders.Columns["CustomerId"]});
     fkc.AcceptRejectRule = System.Data.AcceptRejectRule.None;
     fkc.DeleteRule = System.Data.Rule.Cascade;
     fkc.UpdateRule = System.Data.Rule.Cascade;
     this.__tableOrders.Constraints.Add(fkc);
     fkc = new System.Data.ForeignKeyConstraint("FK_Orders_OrderDetails", new System.Data.DataColumn[] {
                 this.__tableOrders.Columns["Id"]}, new System.Data.DataColumn[] {
                 this.__tableOrderDetails.Columns["OrderId"]});
     fkc.AcceptRejectRule = System.Data.AcceptRejectRule.None;
     fkc.DeleteRule = System.Data.Rule.Cascade;
     fkc.UpdateRule = System.Data.Rule.Cascade;
     this.__tableOrderDetails.Constraints.Add(fkc);
     fkc = new System.Data.ForeignKeyConstraint("PK_Products_OrderDetails", new System.Data.DataColumn[] {
                 this.__tableProducts.Columns["Id"]}, new System.Data.DataColumn[] {
                 this.__tableOrderDetails.Columns["ProductId"]});
     fkc.AcceptRejectRule = System.Data.AcceptRejectRule.None;
     fkc.DeleteRule = System.Data.Rule.Cascade;
     fkc.UpdateRule = System.Data.Rule.Cascade;
     this.__tableOrderDetails.Constraints.Add(fkc);
     fkc = new System.Data.ForeignKeyConstraint("PK_Taxes_OrderDetails", new System.Data.DataColumn[] {
                 this.__tableTaxes.Columns["Id"]}, new System.Data.DataColumn[] {
                 this.__tableOrderDetails.Columns["TaxId"]});
     fkc.AcceptRejectRule = System.Data.AcceptRejectRule.None;
     fkc.DeleteRule = System.Data.Rule.Cascade;
     fkc.UpdateRule = System.Data.Rule.Cascade;
     this.__tableOrderDetails.Constraints.Add(fkc);
     this.__relationFK_Orders_OrderDetailsRelation = new System.Data.DataRelation("FK_Orders_OrderDetails", new System.Data.DataColumn[] {
                 this.__tableOrders.Columns["Id"]}, new System.Data.DataColumn[] {
                 this.__tableOrderDetails.Columns["OrderId"]}, false);
     this.__relationFK_Orders_OrderDetailsRelation.Nested = false;
     this.Relations.Add(this.__relationFK_Orders_OrderDetailsRelation);
     this.__relationPK_Products_OrderDetailsRelation = new System.Data.DataRelation("PK_Products_OrderDetails", new System.Data.DataColumn[] {
                 this.__tableProducts.Columns["Id"]}, new System.Data.DataColumn[] {
                 this.__tableOrderDetails.Columns["ProductId"]}, false);
     this.__relationPK_Products_OrderDetailsRelation.Nested = false;
     this.Relations.Add(this.__relationPK_Products_OrderDetailsRelation);
     this.__relationPK_Taxes_OrderDetailsRelation = new System.Data.DataRelation("PK_Taxes_OrderDetails", new System.Data.DataColumn[] {
                 this.__tableTaxes.Columns["Id"]}, new System.Data.DataColumn[] {
                 this.__tableOrderDetails.Columns["TaxId"]}, false);
     this.__relationPK_Taxes_OrderDetailsRelation.Nested = false;
     this.Relations.Add(this.__relationPK_Taxes_OrderDetailsRelation);
     this.__relationFK_Customers_OrdersRelation = new System.Data.DataRelation("FK_Customers_Orders", new System.Data.DataColumn[] {
                 this.__tableCustomers.Columns["Id"]}, new System.Data.DataColumn[] {
                 this.__tableOrders.Columns["CustomerId"]}, false);
     this.__relationFK_Customers_OrdersRelation.Nested = false;
     this.Relations.Add(this.__relationFK_Customers_OrdersRelation);
     this.__relationFK_Categories_ProductsRelation = new System.Data.DataRelation("FK_Categories_Products", new System.Data.DataColumn[] {
                 this.__tableCategories.Columns["Id"]}, new System.Data.DataColumn[] {
                 this.__tableProducts.Columns["CategoryId"]}, false);
     this.__relationFK_Categories_ProductsRelation.Nested = false;
     this.Relations.Add(this.__relationFK_Categories_ProductsRelation);
     this.__relationFK_Taxes_ProductsRelation = new System.Data.DataRelation("FK_Taxes_Products", new System.Data.DataColumn[] {
                 this.__tableTaxes.Columns["Id"]}, new System.Data.DataColumn[] {
                 this.__tableProducts.Columns["DefaultTaxId"]}, false);
     this.__relationFK_Taxes_ProductsRelation.Nested = false;
     this.Relations.Add(this.__relationFK_Taxes_ProductsRelation);
     this.__relationR_Taxes_OrdersRelation = new System.Data.DataRelation("R_Taxes_Orders", new System.Data.DataColumn[] {
                 this.__tableTaxes.Columns["Id"]}, new System.Data.DataColumn[] {
                 this.__tableOrders.Columns["TaxId"]}, false);
     this.__relationR_Taxes_OrdersRelation.Nested = false;
     this.Relations.Add(this.__relationR_Taxes_OrdersRelation);
     this.__relationR_Payments_OrdersRelation = new System.Data.DataRelation("R_Payments_Orders", new System.Data.DataColumn[] {
                 this.__tablePayments.Columns["Id"]}, new System.Data.DataColumn[] {
                 this.__tableOrders.Columns["PaymentId"]}, false);
     this.__relationR_Payments_OrdersRelation.Nested = false;
     this.Relations.Add(this.__relationR_Payments_OrdersRelation);
 }
Esempio n. 38
0
 internal MetaDataMember ReadMember(MetaDataTable table, int index)
 {
     using (MemoryStream stream = new MemoryStream(tablesHeap.Contents))
     {
         using (BinaryReader reader = new BinaryReader(stream))
         {
             stream.Position = table.TableOffset - tablesHeap.StreamOffset;
             stream.Position += (table.CalculateRowSize() * (index - 1));
             Type type;
             MetaDataRow row;
             if (GetRowAndType(reader, table, out row, out type))
             {
                 return CreateMember(type, row, table.Type, index);
             }
         }
     }
     return null;
 }