public void Post([FromBody] string value) { ReceiptDatum datum = Newtonsoft.Json.JsonConvert.DeserializeObject <ReceiptDatum>(value); GlobalInstance.DB.RecordTable.Insert("Receipt Insert", datum); GlobalInstance.DB.ReceiptTable.Insert(datum); }
public int Insert(ReceiptDatum datum) { List <object> parameter = new List <object>() { datum.Id, datum.Payee, datum.Date }; const string tempTable = "@TEMP_OUTPUT"; const string tempField = "TMP_UID"; string sql = $" DECLARE {tempTable} TABLE ({tempField} int); " + $" INSERT INTO {TABLE} ({FIELD_ID}, {FIELD_PAYEE}, {FIELD_DATE})" + $" OUTPUT INSERTED.{FIELD_UID} INTO {tempTable}({tempField})" + $" VALUES (?, ?, ?); "; foreach (var item in datum.Items) { sql += $" INSERT INTO {ITEMS_TABLE} ({ITEMS_FIELD_RECEIPT_UID}, {ITEMS_FIELD_PRODUCT_NAME}, {ITEMS_FIELD_PRICE}, {ITEMS_FIELD_NUMBER}) " + $" SELECT {tempField}, ?, ?, ? " + $" FROM {tempTable}; "; parameter.Add(item.ProductName); parameter.Add(item.Price); parameter.Add(item.ProductNumber); } sql += $" SELECT * FROM {tempTable}; "; int receiptUid = -1; DoCommand(sql, (SqlCommand cmd) => { //cmd.ExecuteNonQuery(); using var reader = cmd.ExecuteReader(); while (reader.Read()) { ConvertToInt(reader[tempField], out receiptUid); } }, parameter.ToArray()); return(receiptUid); }