如果你想從一個數據庫到另一個使用LINQ「複製」的記錄,那麼你需要兩個數據庫環境中,一個爲你是從讀取數據庫,一個是您正在閱讀到數據庫。
EditTime[] sourceRows;
using (var sourceContext = CreateSourceContext())
{
sourceRows = ReadRows(sourceContext);
}
using (var destinationContext = CreateDestinationContext())
{
WriteRows(destinationContext, sourceRows);
}
現在,您只需要在實施填補ReadRows
和WriteRows
使用標準的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中的所有操作。
嗨,歡迎來到堆棧溢出。這不是一個提問的好方法,請先閱讀規則。您能否提供一個您的代碼示例,並解釋該代碼中沒有工作的錯誤消息?謝謝。 – BenjaminPaul 2015-02-10 09:26:34
我有記錄列表: – Siddh 2015-02-10 09:29:02
如果它的linq2sql,調用'_TimeClockDataContext.SubmitChanges()'。 – Ofiris 2015-02-10 09:55:11