使用实体框架1(EF1)更新 - 在saveChanges()上

时间:2011-10-12 11:30:24

标签: c# asp.net entity-framework

我正在尝试增加存储在数据库中的计数器。

因此,这需要我使用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);

或者类似,但我的intellisense不喜欢这个并且它没有构建所以我认为这些只是EF 4的一部分。

我很遗憾地坚持使用EF 1.有没有办法做到这一点。

我对这些东西很陌生,所以也许我不会以正确的方式解决这个问题......

1 个答案:

答案 0 :(得分:1)

当您插入Booking时,您正在创建上下文的新实例,并仅在该实例上调用保存更改。您的OrderCounter已从存储库加载,我猜它使用了不同的上下文实例。您应该在两个操作之间共享上下文实例,或者您必须在两个上下文中调用SaveChanges

顺便说一下。如果代码在ASP.NET中运行,则代码不是很可靠,因为并发客户端可以存储相同的计数器。