将一个表行复制到另一个表行

时间:2015-10-07 11:01:45

标签: sql-server linq linq-to-sql

我有一个名为tbl_persons的表。我创建了另一个表格,我想创建tbl_personsHistory的历史。

两个表都相同,但名称除外: 这段代码我用于tbl_persons的正常数据操作:

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

变量myPersonOriginal包含完整记录。

如何将该单行复制到tbl_personsHistory?

2 个答案:

答案 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();

答案 1 :(得分:0)

试试这种方式

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

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