簡體   English   中英

C#BatchCopy外鍵

[英]c# batchcopy foreign key

我正在讀取.txt文件並將其數據插入數據行,這些數據行被組合在一個數據視圖中,需要被推送到一個SQL數據庫到一個特定的表,但是它缺少一個外鍵而且我不知道如何獲取它在另一張桌子上。

DataTable.Row的字段應存儲在[Fouten]表中。 這些結果需要通過作為外鍵插入到[Fouten]表中的TreinId鏈接到第一個表[Treinen]。

但是,如何獲取需要插入[Treinen]表中可用的[Fouten]表中的ID?

或者我應該使用不同的方法同時將一堆行推送到SQL數據庫?

也許我可以從這里執行存儲過程? 那個問題也解決了嗎?

dt.Rows.Add(new object[] { datum, foutcode, omschrijving, module[module.Length - 1], tijd, teller, absentOfPresent});


using (SqlBulkCopy sbc = new SqlBulkCopy(GetConnectionString(), SqlBulkCopyOptions.KeepIdentity))
{
    sbc.DestinationTableName = "dbo.Fouten";
    sbc.BatchSize = 8000;

    sbc.ColumnMappings.Add("Datum", "Datum");
    sbc.ColumnMappings.Add("Foutcode", "FoutCode");
    sbc.ColumnMappings.Add("Omschrijving", "Omschrijving");
    sbc.ColumnMappings.Add("Module", "Module");
    sbc.ColumnMappings.Add("Time", "Time");
    sbc.ColumnMappings.Add("Teller", "Teller");
    sbc.ColumnMappings.Add("Mnemo", "Mnemo");
    //Retrieve TreinId from other table
    //Select TreinId Where Name = '1302';
    sbc.ColumnMappings.Add("??????", "TreinId");

    sbc.WriteToServer(dtInsertRows);
  }

在此輸入圖像描述

我認為您不能與批量復制同時進行查找。 另外兩個選擇:

1)將文件數據批量復制到TEMPORARY表中,然后執行SELECT..INTO查詢,該查詢將臨時表和“ TREINEN”表連接在一起,並將數據(帶有外鍵)插入“ FOUTEN”表中

2)在C#中使用已經連接了第二個數據表的LINQ查詢,其中第二個數據表包含來自“ TREINEN”的數據,為您提供一個具有外鍵的新數據表,然后將其復制到Fouten表中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM