public ExtractorTest() { Random r = new Random(); r.NextBytes(source); str = new InstantFigure(InstantFigureMocks.InstantFigure_MemberRubric_FieldsAndPropertiesModel(), "InstantFigure_MemberRubric_FieldsAndPropertiesModel_ValueType"); FieldsAndPropertiesModel fom = new FieldsAndPropertiesModel(); table = new InstantMultemic(str, "InstantMultemic_Compilation_Test"); rctab = table.New(); rcobj = rctab.NewFigure(); foreach (var rubric in str.Rubrics.AsValues()) { if (rubric.FigureFieldId > -1) { var field = fom.GetType().GetField(rubric.FigureField.Name, BindingFlags.NonPublic | BindingFlags.Instance); if (field == null) { field = fom.GetType().GetField(rubric.RubricName); } if (field == null) { var prop = fom.GetType().GetProperty(rubric.RubricName); if (prop != null) { rcobj[rubric.FigureFieldId] = prop.GetValue(fom); } } else { rcobj[rubric.FigureFieldId] = field.GetValue(fom); } } } for (int i = 0; i < 1000; i++) { IFigure nrcstr = rctab.NewFigure(); nrcstr.ValueArray = rcobj.ValueArray; rctab.Add(i, nrcstr); } structBytes = new byte[rctab.FigureSize]; structBytes2 = new byte[rctab.FigureSize]; rcobj.StructureTo(ref structBytes, 0); }
public InstantMultemic DeckFromSchema(DataTable schema, IDeck <MemberRubric> operColumns, bool insAndDel = false) { List <MemberRubric> columns = new List <MemberRubric>(schema.Rows.Cast <DataRow>().AsEnumerable().AsQueryable() .Select(c => new MemberRubric(new FieldRubric(Type.GetType(c["DataType"].ToString()), c["ColumnName"].ToString(), Convert.ToInt32(c["ColumnSize"]), Convert.ToInt32(c["ColumnOrdinal"])) { RubricSize = Convert.ToInt32(c["ColumnSize"]) }) { FigureFieldId = Convert.ToInt32(c["ColumnOrdinal"]), IsIdentity = Convert.ToBoolean(c["IsIdentity"]), IsAutoincrement = Convert.ToBoolean(c["IsAutoincrement"]), IsDBNull = Convert.ToBoolean(c["AllowDBNull"]) }).ToList()); List <MemberRubric> _columns = new List <MemberRubric>(); if (insAndDel) { for (int i = 0; i < (int)(columns.Count / 2); i++) { _columns.Add(columns[i]); } } else { _columns.AddRange(columns); } InstantFigure rt = new InstantFigure(_columns.ToArray(), "SchemaFigure"); InstantMultemic tab = new InstantMultemic(rt, "Schema"); IMultemic deck = tab.Collection; List <DbTable> dbtabs = DbHand.Schema.DataDbTables.List; MemberRubric[] pKeys = columns.Where(c => dbtabs.SelectMany(t => t.GetKeyForDataTable.Select(d => d.RubricName)).Contains(c.RubricName) && operColumns.Select(o => o.RubricName).Contains(c.RubricName)).ToArray(); if (pKeys.Length > 0) { deck.Rubrics.KeyRubrics = new MemberRubrics(pKeys); } return(tab); }
public MathlineTest() { instFig = new InstantFigure(typeof(MathlineMockModel).GetMembers().Select(m => m.MemberType == MemberTypes.Field ? m : m.MemberType == MemberTypes.Property ? m : null).Where(p => p != null).ToArray(), "InstantFigure_MemberRubric_FieldsAndPropertiesModel"); instMtic = new InstantMultemic(instFig, "InstantMultemic_Mathline_Test"); spcMtic = instMtic.New(); MathlineMockModel fom = new MathlineMockModel(); for (int i = 0; i < 250 * 1000; i++) { var f = Mathline_Figure_Helper_Test(spcMtic, fom); f["NetPrice"] = (double)f["NetPrice"] + i; f["NetCost"] = (double)f["NetPrice"] / 2; spcMtic.Add((long)int.MaxValue + i, f); } }
public InstantMultemic InjectRead(string tableName, IDeck <string> keyNames = null) { DataTable schema = dr.GetSchemaTable(); List <MemberRubric> columns = new List <MemberRubric>(schema.Rows.Cast <DataRow>().AsEnumerable().AsQueryable() .Where(n => n["ColumnName"].ToString() != "SystemSerialCode").Select(c => new MemberRubric(new FieldRubric(Type.GetType(c["DataType"].ToString()), c["ColumnName"].ToString(), Convert.ToInt32(c["ColumnSize"]), Convert.ToInt32(c["ColumnOrdinal"])) { RubricSize = Convert.ToInt32(c["ColumnSize"]) }) { FigureFieldId = Convert.ToInt32(c["ColumnOrdinal"]), IsIdentity = Convert.ToBoolean(c["IsIdentity"]), IsAutoincrement = Convert.ToBoolean(c["IsAutoincrement"]), IsDBNull = Convert.ToBoolean(c["AllowDBNull"]), } ).ToList()); InstantFigure rt = new InstantFigure(columns.ToArray(), tableName); InstantMultemic deck = new InstantMultemic(rt, tableName + "_Collection"); IMultemic tab = deck.Collection; bool takeDbKeys = false; if (keyNames != null) { if (keyNames.Count > 0) { foreach (var k in keyNames) { tab.Rubrics.KeyRubrics.Add(tab.Rubrics[k]); } } else { takeDbKeys = true; } } else { takeDbKeys = true; } if (takeDbKeys && DbHand.Schema != null && DbHand.Schema.DataDbTables.List.Count > 0) { List <DbTable> dbtabs = DbHand.Schema.DataDbTables.List; MemberRubric[] pKeys = tab.Rubrics.AsValues() .Where(c => dbtabs.SelectMany(t => t.GetKeyForDataTable.Select(d => d.RubricName)) .Contains(c.RubricName)).ToArray(); if (pKeys.Length > 0) { foreach (var k in pKeys) { tab.Rubrics.KeyRubrics.Add(k); } } } if (dr.Read()) { int columnsCount = dr.FieldCount; object[] itemArray = new object[columnsCount]; int[] keyOrder = tab.Rubrics.KeyRubrics.AsValues().Select(k => k.FigureFieldId).ToArray(); do { IFigure figure = tab.NewFigure(); dr.GetValues(itemArray); figure.ValueArray = itemArray.Select((a, y) => itemArray[y] = (a == DBNull.Value) ? a.GetType().GetDefault() : a).ToArray(); figure.SystemSerialCode = new Ussn(keyOrder.Select(ko => itemArray[ko]).ToArray()); tab.Add(figure); }while (dr.Read()); itemArray = null; } dr.Dispose(); return(deck); }