обновить объект, созданный в другом текстовом данных - PullRequest
2 голосов
/ 08 декабря 2010

Мне очень нужна ваша помощь.Я хотел бы обновить объект, созданный в другом текстовом формате;Вот мой кодОператор вставки работает хорошо, но я не могу написать код для обновления

var dataContext = new ReconNewDataContext();           
        if (Id == 0)
        {
            var item = this;
            dataContext.RequestIO.InsertOnSubmit(item);
            dataContext.SubmitChanges();
            Id = item.Id;
        }
        else
        {
            var item = this;
            //update object
        }        

Я прочитал Linq2SQL: объект обновления не создан в datacontext

Я пробовалиспользовать .Attach (this) .Attach (this, true) .Attach (this, oldObjectFromBase), но всегда возникают ошибки.

Я знаю, что могу получить объект из базы данных и вручную передать данные из измененного объекта, но будут новые поля.Это означает, что я всегда должен добавлять эти новые поля в метод Save ().

Существует ли какой-либо "красивый" метод для обновления объекта, созданного в другом текстовом тексте?

Ответы [ 2 ]

0 голосов
/ 02 января 2011

Вы можете использовать следующий шаблон:

  1. Извлечение существующего объекта из хранилища
  2. Используйте AutoMapper для копирования свойств
  3. Сохраните ваш объект обратно.
0 голосов
/ 08 декабря 2010

Проверьте эту статью: http://omaralzabir.com/linq_to_sql__how_to_attach_object_to_a_different_data_context/

Кроме того, в вашем примере для обновления попробуйте выполнить:

var item = new ObjectBeingUpdated();
//copy over properties from old object to new object, make sure pk's match

//Attach this new object

Нечто подобное сработало и для моего коллеги.

ОБНОВЛЕНИЕ: проверьте это для получения дополнительной информации о приложении: http://blogs.msdn.com/b/dinesh.kulkarni/archive/2007/10/08/attach-if-you-have-something-detached.aspx

...