public static void Single(this DataColumn col, object value) { var inputTable = Interpreter.Context.TomScripting.GetManager(col.Table.TableName); var stock = Interpreter.Context.Scope.Stock; long ownerId = stock.GetId(inputTable.Schema.OwnerIdColumn); using (TransactionScope trans = new TransactionScope()) { object obj = value; if (col.DataType == typeof(double)) { obj = Convert.ToDouble(value, CultureInfo.InvariantCulture); } ScopedTable result = inputTable.Query(ownerId); DataRow row = result.NewRow(); row[inputTable.Schema.OwnerIdColumn] = ownerId; row[col.ColumnName] = obj; result.AddOrUpdate(row, col.ColumnName); trans.Complete(); } }
private void AddRow(ScopedTable table, long ownerId, string date, long origin, double value) { DataRow row = table.NewRow(); row[table.Schema.OwnerIdColumn] = ownerId; row.SetDate(table.Schema, DateTime.Parse(date)); row[table.Schema.OriginColumn] = origin; row["value"] = value; table.AddOrUpdate(row); }
public void AddOrUpdateWithDate() { TableSchema schema = new TableSchema("test1", new DataColumn("stock_id", typeof(long)), new DataColumn("date", typeof(string)), new DataColumn("value", typeof(double))); DataTable t = schema.NewTempTable(); ScopedTable table = new ScopedTable(schema, t, null); // initial row { DataRow row = table.NewRow(); row["stock_id"] = 1; row.SetDate(schema, DateTime.Parse("2002-01-01 00:00")); row["value"] = 23.0d; table.AddOrUpdate(row); } // same id, same date => update { DataRow row = table.NewRow(); row["stock_id"] = 1; row.SetDate(schema, DateTime.Parse("2002-01-01 00:00")); row["value"] = 42.0d; table.AddOrUpdate(row); } // same id, new date => add { DataRow row = table.NewRow(); row["stock_id"] = 1; row.SetDate(schema, DateTime.Parse("2002-01-02 00:00")); row["value"] = 25.0d; table.AddOrUpdate(row); } // new stock_id, same date => add { DataRow row = table.NewRow(); row["stock_id"] = 2; row.SetDate(schema, DateTime.Parse("2002-01-02 00:00")); row["value"] = 37.0d; table.AddOrUpdate(row); } var rows = table.Rows.ToList(); Assert.AreEqual(3, rows.Count); Assert.AreEqual(1, rows[0][schema.OwnerIdColumn]); Assert.AreEqual(42.0d, rows[0]["value"]); Assert.AreEqual(1, rows[1][schema.OwnerIdColumn]); Assert.AreEqual(25.0d, rows[1]["value"]); Assert.AreEqual(2, rows[2][schema.OwnerIdColumn]); Assert.AreEqual(37.0d, rows[2]["value"]); }