2015-10-07 131 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方法。 –

相关问题