2015-10-07 240 views
0

我有一個名爲tbl_persons的表格。我在另一張桌子上創作了tbl_personsHistory的歷史。將一個表格行復制到另一個表格

兩個表是相同的,除了名稱: 此代碼我有用於tbl_persons正常數據操作:

var myPersonOriginal = dbContext.tbl_persons.FirstOrDefault(item => item.PersonID == parameters.PersonID); 

可變myPersonOriginal包含一個完整的記錄。

如何將單一行復制到tbl_personsHistory?

+0

謝謝大家的意見。我已經通過手動迭代屬性來實現它。但這是我想避免的。我有幾張大桌子,迭代每個屬性都很麻煩。我拒絕相信沒有辦法簡單地複製對象。它可以是演員嗎? –

回答

1

嘗試:

var toInsert = from b in tbl_persons 
        where your_conditions_goes_here 
        select new A 
        { 
         ... 
        }; 

    tbl_persons_copy.InsertAllOnSubmit(toInsert); 
    dc.SubmitChanges(); 

或者

context 
    .tbl_persons_copy 
    .InsertAllOnSubmit(
    context 
     .tbl_persons 
     .Where(your_conditions_goes_here) 
     .Select(b => new A { ... }) 
); 

編輯2:

,你可以用另一種方式嘗試,第一次選擇都是從主表中要插入數據複製表。然後將所有從主表中選擇的數據逐一插入副本表中,如下所示。

list<main_table> liGet=dbContext.tbl_persons.Where(my_conditions_).ToList(); 

foreach(main_table mb in liGet) 
{ 
copy_table objTbl=new copy_table(); 
objTbl.col1=mb.col1; 
. 
. 
. 
. 
db.copy_table.Add(objTbl); 
} 

db.SaveChanges(); 
+0

我很抱歉,但我對LINQ世界非常陌生,我不確定我需要做什麼來完成這個副本。 –

+0

@Wexoni,看到我更新的答案,希望它能幫助你。 –

0

嘗試這種方式

var myPersonOriginal = dbContext.tbl_persons.FirstOrDefault(item => item.PersonID == parameters.PersonID); 

    tbl_personsHistory.InsertAllOnSubmit(myPersonOriginal); 
    dbContext.SubmitChanges(); 
+0

我遇到了這種方法的問題。 tbl_personsHistory。它不包含InsertAllOnSubmit方法。 –

相關問題