Обновите запись в Linq2Sql с помощью объекта recordType - PullRequest
2 голосов
/ 15 апреля 2009

Следующий упрощенный код не работает (потому что он устанавливает ссылку на извлеченный объект для параметра), но он показывает, что я хочу сделать

 public bool updateEvent(clubEvent newEvent)
    {
        TNightCon tCon = new TNightCon();
        clubEvent cEv = (from cEvent in tCon.clubEvents
                         where cEvent.EventID == newEvent.EventID
                         select cEvent).First();

        // Won't work, but do I have to set all the fields manually?
        cEv = newEvent;
        tCon.SubmitChanges();
        return true;
    }

Ответы [ 2 ]

3 голосов
/ 15 апреля 2009

Или, альтернативно,

  tCon.ClubEvents.DeleteOnSubmit(cEv);
  tCon.CLubEvents.InsertOnSubmit(newEvent);
  tCon.SubmitChanges();
2 голосов
/ 15 апреля 2009

Вам не нужно извлекать текущий объект, чтобы делать то, что вам нужно. Если идентификаторы одинаковы, все, что вам нужно сделать, это присоединить новый объект к вашему контексту. Затем уловка заключается в том, чтобы заставить Linq2SQL обрабатывать объект как «грязный». У Тимоти Хоури есть сообщение в блоге , в котором подробно описывается полезная техника с использованием метода обновления в контексте. Вот как это будет выглядеть.

 public bool updateEvent(clubEvent newEvent)
    {
        tCon.clubEvents.Attach(newEvent);
        tCon.Refresh(RefreshMode.KeepCurrentValues, settings)
        tCon.SubmitChanges();
        return true;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...