Through this blog post I will try to outline what I found out and what could have been done better to resolve the problem.Analysis: I went in to a call with the customer and took a look at their code. Let me list them down: Now, next thing I did was to take look at the timing.I have a problem that is linked to the fact that the EF normal queries return deleted objects and do not return inserted objects if EF Save Changes has not been called to commit the data to the database.The Telerik (and probably most other controls) do not seem use the EF Object State Manager to know about inserted and deleted objects.
So this made me to delve little bit deeper into what exactly is happening in this scenario.
Similarly, we can present a list of requests based on the user’s “role” they perform, and allow them to edit a request also using a wizard style progression through the various tabs worth of information, and when they have tabbed through all the pages of data, making edits, deletions, and additions, they can on the last tab, again hit the “submit” button, and we then call the Entity Framework “Save Changes” to push everything out to the database in a single transaction, all or nothing, and it either succeeds, or on occasion we must gracefully tell the user who stopped to go to lunch, about an “optimistic concurrency failure” which basically means - sorry, you took so long you need to start over since someone already updated the request that you were working on. NET, Telerik Ajax controls and Entity Data Souce controls.
Our problem is that the Telerik data bound controls, when binding to an Entity Data Source, are designed to update the database constantly.
Unfortunately our web application must collect data and submit it all at once at the end of several tabs. NET Ajax Controls and Entity Framework Entity Data Source Controls Our web app is what I would call a long term, session based, web application.
I have written up a detailed problem description below and am hoping for some suggestions. The application creates and edits “requests” and our strategy is to collect all the information for a new request on a series of tabs, in a “wizard” like fashion, and then submit the data for the request to the database when the user hits “submit”.