В C# сохранить 2 объекта DataTable потом базу потом выкл/вкл спасает повторяющиеся данные
Я сохраняю входящие данные в DataTable. Я хотел бы сохранить этот DataTable в таблице базы данных, чтобы у меня были записаны все данные. Как часто, по-вашему, я должен записывать эти данные в базу данных?
Также я должен сохранить данные построчно с SQL-запрос, или использовать хранимую процедуру, или я должен сохранить данные с помощью SqlBulkCopy
private void BtnStartCapture_Click(object sender, RoutedEventArgs e) { if (!Running) { Running = true; var incomingData = BinanceSocketClient.SubscribeToTradeUpdatesAsync("BTCUSD", (data) => { _ = AddNewIncomingTradeAsync(data); AddDataRow(data); counter++; if(counter >= 2 ) { SaveToDBTableV2(); counter = 0; } }); IncomingStreamOn(); } } public void AddDataRow(BinanceStreamTrade data) { if(DataTable != null) { DataRow row = DataTable.NewRow(); row["TradeID"] = data.OrderId; row["Price"] = data.Price; row["Quantity"] = data.Quantity; row["TradeTime"] = data.TradeTime; row["Symbol"] = data.Symbol; row["BuyerID"] = data.BuyerOrderId; row["SellerID"] = data.SellerOrderId; DataTable.Rows.Add(row); } } public void SaveToDBTableV2() { using (SqlConnection connection = new SqlConnection(Properties.Settings.Default.Connection)) { connection.Open(); using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection)) { bulkCopy.DestinationTableName = "dbo.EmailTest"; try { SqlBulkCopyColumnMapping TradeID = new SqlBulkCopyColumnMapping("TradeID", "TradeID"); bulkCopy.ColumnMappings.Add(TradeID); SqlBulkCopyColumnMapping Price = new SqlBulkCopyColumnMapping("Price", "Price"); bulkCopy.ColumnMappings.Add(Price); SqlBulkCopyColumnMapping Quantity = new SqlBulkCopyColumnMapping("Quantity", "Quantity"); bulkCopy.ColumnMappings.Add(Quantity); SqlBulkCopyColumnMapping TradeTime = new SqlBulkCopyColumnMapping("TradeTime", "TradeTime"); bulkCopy.ColumnMappings.Add(TradeTime); SqlBulkCopyColumnMapping Symbol = new SqlBulkCopyColumnMapping("Symbol", "Symbol"); bulkCopy.ColumnMappings.Add(Symbol); SqlBulkCopyColumnMapping BuyerID = new SqlBulkCopyColumnMapping("BuyerID", "BuyerID"); bulkCopy.ColumnMappings.Add(BuyerID); SqlBulkCopyColumnMapping SellerID = new SqlBulkCopyColumnMapping("SellerID", "SellerID"); bulkCopy.ColumnMappings.Add(SellerID); bulkCopy.WriteToServer(DataTable, DataRowState.Added); } catch (Exception ex) { MessageBox.Show(ex.Message); } } } }
Что я уже пробовал:
В настоящее время я использую SqlBulkCopy, в чем разница от сохранения его с помощью простого запроса вставки по сравнению с этим?
Я также не хочу иметь дубликаты данных, в настоящее время я сохраняю datatable в базе данных, и я продолжаю сохранять его, и он работает отлично, но когда я останавливаю websocket и снова включаю его, а затем иду, чтобы сохранить данные, он повторно сохраняет все данные в datatable, так что я получаю дубликаты данных. Что бы вы посоветовали мне сделать для этой задачи? Что бы вы сделали, чтобы не получить дублирующиеся данные?
Gerry Schmitz
Вам нужны "цифры". Все остальное похоже на покупку брюк (онлайн), не зная размера своей талии.