Обновление с использованием Entity Framework 1 (EF1) - на saveChanges () - PullRequest
0 голосов
/ 12 октября 2011

Я пытаюсь увеличить счетчик, который хранится в БД.

Так что для этого требуется, чтобы я сделал и обновил с помощью Entity Framework 1 (EF1).

Я делаю что-то вроде этого:

  CounterTBL OrderCounter = MyRepository.CounterTableDetails("ORDERID"); 

  Booking Booking = new Booking();

  Booking.BookingAdminID = User.ID;
  Booking.BookingStatus = 2;

  OrderCounter.CounterFLD = OrderCounter.CounterFLD + 1;

  using (var ctx = new WhygoContext())
  {
      ctx.AddToBookings(Booking);
      ctx.SaveChanges();
   }

Бронирование вставлено нормально, но я ожидал, что существующая запись будет обновлена, чего не было.

Поиск в StackOverflow и в Интернете показывает, что я должен сделать что-то вроде этого: ctx.CounterTBL.Attach (OrderCounter); ctx.ApplyCurrentValues ​​("CounterTBLs", OrderCounter);

Или похожий, но моему интеллигенту это не нравится и он не строится, поэтому я предполагаю, что это только часть EF 4.

К сожалению, я застрял с EF 1. Есть ли способ сделать это.

Я довольно новичок в этом, так что, может быть, я не буду делать это правильно ...

1 Ответ

1 голос
/ 12 октября 2011

Когда вы вставляете Booking, вы создаете новый экземпляр контекста и вызываете изменения сохранения только в этом экземпляре.Ваш OrderCounter был загружен из хранилища, и я думаю, что он использовал другой экземпляр контекста.Вы должны совместно использовать экземпляр контекста между обеими операциями, или вам придется вызывать SaveChanges в обоих контекстах.

Кстати.Ваш код не очень надежен, если он выполняется в ASP.NET, потому что одновременные клиенты могут хранить один и тот же счетчик.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...