Объединить объект, который находился вне текста данных. - PullRequest
0 голосов
/ 29 июля 2010

У меня следующий вопрос: Легко вставить oBject в базу данных с помощью формы.

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

.

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. опубликуйте, но ТОГДА !!! поскольку он вышел за пределы вашего текста данных, вам необходимо перезагрузить объект из текста данных,
  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();
            }
        }

Не знаю, понятно ли, если это не комментирует меня, я отредактирую

1 Ответ

1 голос
/ 30 июля 2010

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

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

"Это также не очень хорошая идея, чтобы даже попытаться получить старую версию. От делая то, что вы в действительности превращаете от оптимистичного параллелизма, так что если Вы предполагали, что это плохо подход. Что вам нужно сделать, это туда и обратно как исходное состояние и текущее состояние объекта. "

...