2011-10-12 61 views
0

我想增加存儲在數據庫中的計數器。更新使用實體框架1(EF1) - 在saveChanges()

所以這需要我使用實體框架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

當你插入Booking正在創建的內容和通話的新實例僅在該實例上保存更改。您的OrderCounter已從存儲庫加載,我想它使用了不同的上下文實例。您應該在兩個操作之間共享上下文實例,否則您必須在上下文中調用SaveChanges

Btw。如果代碼在ASP.NET中運行,則代碼不可靠,因爲併發客戶端可以存儲相同的計數器。