public Album <Album <IFigure> > InsertRead(IMultemic toInsertCards) { IMultemic deck = toInsertCards; Album <IFigure> insertedList = new Album <IFigure>(); Album <IFigure> brokenList = new Album <IFigure>(); int i = 0; do { int columnsCount = deck.Rubrics.Count; if (i == 0 && deck.Rubrics.Count == 0) { InstantMultemic tab = DeckFromSchema(dr.GetSchemaTable(), deck.Rubrics.KeyRubrics); deck = tab.Collection; columnsCount = deck.Rubrics.Count; } object[] itemArray = new object[columnsCount]; int[] keyOrder = deck.Rubrics.KeyRubrics.AsValues().Select(k => k.FigureFieldId).ToArray(); while (dr.Read()) { if ((columnsCount - 1) != dr.FieldCount) { InstantMultemic tab = DeckFromSchema(dr.GetSchemaTable(), deck.Rubrics.KeyRubrics); deck = tab.Collection; columnsCount = deck.Rubrics.Count; itemArray = new object[columnsCount]; keyOrder = deck.Rubrics.KeyRubrics.AsValues().Select(k => k.FigureFieldId).ToArray(); } dr.GetValues(itemArray); IFigure row = deck.NewFigure(); row.ValueArray = itemArray.Select((a, y) => itemArray[y] = (a == DBNull.Value) ? a.GetType().GetDefault() : a).ToArray(); row.SystemSerialCode = new Ussn(keyOrder.Select(ko => itemArray[ko]).ToArray()); insertedList.Add(row); } foreach (IFigure ir in toInsertCards) { if (!insertedList.ContainsKey(ir)) { brokenList.Add(ir); } } } while (dr.NextResult()); Album <Album <IFigure> > iSet = new Album <Album <IFigure> >(); iSet.Add("Failed", brokenList); iSet.Add("Inserted", insertedList); return(iSet); }
public void Sqlbank_Accessor_GetInstantMultemic_Test() { InstantMultemic im = bank.GetInstant("SELECT * From StockTradingActivity", "StockTradingActivity", new Deck <string>() { "permno", "market_name", "trading_date" }); }
public void Sqlbank_Accessor_SetInstantMultemic_Test() { InstantMultemic im = bank.GetInstant("SELECT * From StockTradingActivity", "StockTradingActivity", new Deck <string>() { "permno", "market_name", "trading_date" }); var result = bank.SaveInstant(im.Collection, false); }
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 InstantMultemic ExecuteInject(string sqlqry, string tableName = null) { SqlCommand cmd = new SqlCommand(sqlqry, _cn); cmd.Prepare(); if (_cn.State == ConnectionState.Closed) { _cn.Open(); } IDataReader sdr = cmd.ExecuteReader(); SqlReader <IMultemic> dr = new SqlReader <IMultemic>(sdr); InstantMultemic it = dr.InjectRead(tableName); sdr.Dispose(); cmd.Dispose(); return(it); }
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 ExecuteInject(string sqlqry, string tableName, IDeck <string> keyNames = null) { try { SqlCommand cmd = new SqlCommand(sqlqry, _cn); cmd.Prepare(); if (_cn.State == ConnectionState.Closed) { _cn.Open(); } IDataReader sdr = cmd.ExecuteReader(); SqlReader <IMultemic> dr = new SqlReader <IMultemic>(sdr); InstantMultemic it = dr.InjectRead(tableName, keyNames); sdr.Dispose(); cmd.Dispose(); return(it); } catch (Exception ex) { throw new SqlException(ex.ToString()); } }
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); }
public Album <Album <IFigure> > UpdateRead(IMultemic toUpdateCards) { //InstantFigure instfig = new InstantFigure(toUpdateCards.Rubrics, "UpdateFigure"); //new InstantMultemic(instfig, "Update"); IMultemic deck = toUpdateCards; Album <IFigure> updatedList = new Album <IFigure>(); Album <IFigure> toInsertList = new Album <IFigure>(); int i = 0; do { int columnsCount = deck.Rubrics != null ? deck.Rubrics.Count : 0; if (i == 0 && columnsCount == 0) { InstantMultemic tab = DeckFromSchema(dr.GetSchemaTable(), deck.Rubrics.KeyRubrics, true); deck = tab.Collection; columnsCount = deck.Rubrics.Count; } object[] itemArray = new object[columnsCount]; int[] keyOrder = deck.Rubrics.KeyRubrics.AsValues().Select(k => k.FigureFieldId).ToArray(); while (dr.Read()) { if ((columnsCount - 1) != (int)(dr.FieldCount / 2)) { InstantMultemic tab = DeckFromSchema(dr.GetSchemaTable(), deck.Rubrics.KeyRubrics, true); deck = tab.Collection; columnsCount = deck.Rubrics.Count; itemArray = new object[columnsCount]; keyOrder = deck.Rubrics.KeyRubrics.AsValues().Select(k => k.FigureFieldId).ToArray(); } dr.GetValues(itemArray); IFigure row = deck.NewFigure(); row.ValueArray = itemArray.Select((a, y) => itemArray[y] = (a == DBNull.Value) ? a.GetType().GetDefault() : a).ToArray(); row.SystemSerialCode = new Ussn(keyOrder.Select(ko => itemArray[ko]).ToArray()); updatedList.Add(row); } foreach (IFigure ir in toUpdateCards) { if (!updatedList.ContainsKey(ir)) { toInsertList.Add(ir); } } } while (dr.NextResult()); Album <Album <IFigure> > iSet = new Album <Album <IFigure> >(); iSet.Add("Failed", toInsertList); iSet.Add("Updated", updatedList); return(iSet); }