2015-10-07 3 views
0

У меня есть таблица с именем tbl_persons. Я сделал еще один стол, где я хотел бы сделать историю tbl_personsHistory.Скопируйте одну строку таблицы в другую

Обе таблицы идентичны, за исключением имени: Этот код у меня есть для нормальной работы с данными для tbl_persons:

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

Переменная myPersonOriginal содержит полную запись.

Как скопировать эту единственную строку в tbl_personsHistory?

+0

Спасибо всем за комментарии. Я сделал это для работы путем повторения свойств вручную. Но этого я хочу избежать. У меня есть несколько больших таблиц, и повторение каждой из этих свойств затруднительно. Я отказываюсь верить, что невозможно просто скопировать объект. Это может быть актерский состав? –

ответ

1

Try:

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 { ... }) 
); 

EDIT 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. –

Смежные вопросы