Laden...

OData WebService wirft manchmal "DataServiceContext.SaveChanges" Exception

Letzter Beitrag vor 8 Jahren 4 Posts 1.720 Views
OData WebService wirft manchmal "DataServiceContext.SaveChanges" Exception

Kann mir jemand auf die Sprünge helfen, woran das liegen kann, dass (manchmal, nicht immer!) ein Update per WebService folgenden Fehler wirft:

Source        : Microsoft.Data.Services.Client -> HandleResponse
Computer      : 04.07.2015 12:07:05 -> Rechner2 Verion: 1.6.3.63
Error         : Fehler beim Verarbeiten dieser Anforderung.
Stack Trace   : at System.Data.Services.Client.SaveResult.HandleResponse()
   at System.Data.Services.Client.BaseSaveResult.EndRequest()
   at System.Data.Services.Client.DataServiceContext.SaveChanges(SaveChangesOptions options)

betrifft folgendes Code Snippet:

                WebService_V7 context = new WebService_V7(new Uri(WebBase.Url));
                Computer comp = context.Computer.Where(c => c.ID == settings.ID).FirstOrDefault();

                if (comp == null) return "";

                comp.Date = DateTime.Now;

                context.UpdateObject(comp);
                context.SaveChanges();

Kann es daran liegen, dass evtl. in der Zwischenzeit ein anderes Update stattfand und die Daten somit inzwischen neu geschrieben wurden, weshalb der aktuelle Update Befehle dann fehlschlägt.

Hat jemand eine Idee?

thx!

Fehler abfangen, loggen und behandeln = Win, win und win.

Alles andere ist raten.

Danke für den Hinweis, habe Exceptions angestellt und in der Inner Exception steht nun tatsächlich folgendes:

<?xml version="1.0" encoding="utf-8"?><m:error xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"><m:code /><m:message xml:lang="de-DE">An error occurred while processing this request.</m:message><m:innererror><m:message>Das Objekt kann nicht bestehend bleiben. Es wurde von einem anderen Programm modifiziert oder gelöscht (bereinigt).</m:message><m:type>DB.Exceptions.LockingException</m:type>

Heitß die Vermutung scheint wahr zu sein, ich muss wohl die Tabellen besser kapseln, da 3 Methoden die selbe Tabelle manipulieren, wenn aber jede Methode eine eigene Tabelle besitzt, müsste das ja dann passen...

Danke jedenfalls für die simple aber effektive Hilfe 😉

Wenn mehrere benutzer auf die gleichen Daten zugreifen, musst du die Daten entweder vorher sperren, oder sie mit einem Timestamp versehen und vor dem Update prüfen ob sie sich verändert haben und entsprechend darauf reagieren.

Lg, XXX