Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
OData WebService wirft manchmal "DataServiceContext.SaveChanges" Exception
baer999
myCSharp.de - Member



Dabei seit:
Beiträge: 375

Themenstarter:

OData WebService wirft manchmal "DataServiceContext.SaveChanges" Exception

beantworten | zitieren | melden

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!
private Nachricht | Beiträge des Benutzers
t0ms3n
myCSharp.de - Member



Dabei seit:
Beiträge: 314

beantworten | zitieren | melden

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

Alles andere ist raten.
private Nachricht | Beiträge des Benutzers
baer999
myCSharp.de - Member



Dabei seit:
Beiträge: 375

Themenstarter:

beantworten | zitieren | melden

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 ;)
private Nachricht | Beiträge des Benutzers
xxxprod
myCSharp.de - Experte

Avatar #avatar-2329.gif


Dabei seit:
Beiträge: 1.378
Herkunft: Österreich\Wien

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers