2015-02-10 21 views
0

插入到其他數據庫中的一個數據庫的記錄我有2個數據庫表。如何在LINQ

我想插入從第一個數據庫到第二個數據庫表記錄在LINQ。我創建了2個帶有2個datacontext的dbml文件,但我無法編寫插入記錄的代碼。

我的記錄列表:

using(_TimeClockDataContext) 
{ 
    var Query = (from EditTime in _TimeClockDataContext.tblEditTimes 
       orderby EditTime.ScanDate ascending 
       select new EditTimeBO 
       { 
        EditTimeID = EditTime.EditTimeID, 
        UserID = Convert.ToInt64(EditTime.UserID), 
        ScanCardId = Convert.ToInt64(EditTime.ScanCardId), 
       }).ToList(); 
    return Query; 
} 

現在我想在新表是在_Premire2DataContext插入記錄。

+0

嗨,歡迎來到堆棧溢出。這不是一個提問的好方法,請先閱讀規則。您能否提供一個您的代碼示例,並解釋該代碼中沒有工作的錯誤消息?謝謝。 – BenjaminPaul 2015-02-10 09:26:34

+0

我有記錄列表: – Siddh 2015-02-10 09:29:02

+0

如果它的linq2sql,調用'_TimeClockDataContext.SubmitChanges()'。 – Ofiris 2015-02-10 09:55:11

回答

0

如果你想從一個數據庫到另一個使用LINQ「複製」的記錄,那麼你需要兩個數據庫環境中,一個爲你是從讀取數據庫,一個是您正在閱讀到數據庫。

EditTime[] sourceRows; 
using (var sourceContext = CreateSourceContext()) 
{ 
    sourceRows = ReadRows(sourceContext); 
} 

using (var destinationContext = CreateDestinationContext()) 
{ 
    WriteRows(destinationContext, sourceRows); 
} 

現在,您只需要在實施填補ReadRowsWriteRows使用標準的LINQ to SQL代碼。寫行的代碼應該看起來有點像這樣。

void WriteRows(TimeClockDataContext context, EditTime[] rows) 
{ 
    foreach (var row in rows) 
    { 
     destinationContext.tblEditTimes.Add(row); 
    } 
    destinationContext.SubmitChanges(); 
} 

需要注意的是,只要模式是一樣的,你可以使用相同的背景,因此,相同的對象 - 所以閱讀記錄時,我們非常想回到正確的數組類型,因此讀數會看起來一個有點像這樣

EditTime[] ReadRows(TimeClockDataContext context) 
{ 
    return (
     from EditTime in _TimeClockDataContext.tblEditTimes 
     orderby EditTime.ScanDate ascending 
     select EditTime 
    ).ToArray(); 
} 

你可以使用數組或列表 - 它並不重要。我主要使用數組是因爲語法較短。請注意,我們返回原始對象而不是創建新對象,因爲這意味着我們可以將這些對象直接添加到第二個數據上下文中。

我沒有任何編譯這段代碼還,所以它可能包含一些錯別字。也道歉,如果我已經犯了一些明顯的錯誤 - 自從我上次使用LINQ to SQL以來已經有一段時間了。

如果你有外鍵或第二個數據庫有不同的模式,事情會變得更加複雜,但基本過程保持不變 - 從一個上下文(使用標準的LINQ to SQL)讀取並將結果存儲在某個地方,然後添加第二個上下文的行(使用標準的LINQ to SQL)。

另外請注意,這不一定會是特別快。如果性能出現問題,那麼您應該考慮在WriteRows方法中使用批量插入,或者甚至可能使用鏈接的服務器來執行SQL中的所有操作。

+0

Thx Justin ...會嘗試一下 – Siddh 2015-02-10 10:17:24