2010-07-29 3 views
0

У меня вопрос: В базу данных с формой легко вставить oBject.Объединить объект, который за пределами datacontext

  1. Просто создать объект
  2. связать его с полями в вашем с.
  3. сообщение обратно в контроллер,
  4. создать новый DataContext и сделать datacontext.InsertOnSubmit (объект)

.

public static void AddPage(string lang, Page page) 
       { 
        using (var db = new CardReaderDataContext()) 
        { 
         page.Lang = lang; 
         page.URL = UrlHelper.CreateValidSeoUrl(page.Name, "-"); 
         db.Pages.InsertOnSubmit(page); 
         db.SubmitChanges(); 
        } 
       } 

Но если вы хотите, чтобы обновить объект, это утомительная работа. Вы делаете тот же поток,

  1. вы получите объект,
  2. связывают его в форму,
  3. пост, но потом !!! , потому что он вышел за пределы вашей DataContext, вы должны перезагрузить объект из DataContext,
  4. передачи все переменные и сохранить его, это немного сложный объяснил, так что я приведу пример:

Для обновить объект, который модифицируется в форме:

public static void Update(Page page) 
     { 
      using (var db = new CardReaderDataContext()) 
      { 
       var _page = db.Pages.Where(p => p.Guid == page.Guid).Single(); 
       _page.ModificationDate = DateTime.Now; 
       _page.Title = page.Title; 
       _page.Description = page.Description; 
       _page.Content = page.Content; 
       _page.Keywords = page.Keywords; 
       _page.Name = page.Name; 
       _page.WTLang = page.WTLang; 
       _page.WTSKU = page.WTSKU; 
       _page.WTTi = page.WTTi; 
       _page.WTUri = page.WTUri; 
       _page.URL = UrlHelper.CreateValidSeoUrl(page.Name, "-"); 
       // _page.Order = GetMaxOrderByMenuGuid(page.MenuGuid); 
       db.SubmitChanges(); 
      } 
     } 

Я не знаю, если это понятно, если это не комментирую, я буду редактировать

+0

Это Linq-to-SQL, который вы используете? И какой именно вопрос, кстати? – Yakimych

+0

yes linq-to-sql, мой вопрос в том, есть ли более простой способ объединить эти объекты при обновлении, а не для каждого значения, копируя новое значение в объект, извлеченный из db. теперь вы делаете это: извлекаете объект из db, изменяете значения, извлекаете один и тот же объект, сохраняете каждое значение до последнего извлеченного, обновляете – Nealv

+0

hmmm мой вопрос непонятен или нет ответа на это – Nealv

ответ

1

Я думаю, что вы ищете DataContext.Attach, но вы можете использовать это только с объектами linqtosql, которые были сериализованы/десериализованы.

Иметь чтения ответа на этот вопрос -. http://social.msdn.microsoft.com/forums/en-US/linqprojectgeneral/thread/384a1c03-3acf-43ef-9a25-b84f93025e63/

«Это также не является хорошей идеей, чтобы даже попытается сгрузить старую версию По делать, что вы в эффект поворота от optimistic concurrency, так что если вы намеревались что это плохой подход . Что вам нужно сделать, это в оба конца и исходное состояние, а - текущее состояние объекта. "

+0

Это не ответ на глобальный вариант (я не думаю, что он есть), но ссылка, которую вы предоставили, и те, которые присутствующие в этом, более полезны и дают мне хорошее представление о вопросе – Nealv

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