2010-12-27 15 views
0

Ich habe eine Klasse erstellt, die für DomainService erbt und über eine Silverlight-Anwendung verfügt, die System.ServiceModel.DomainServices.Client verwendet, um einen DomainContext abzurufen. Ich habe auch POCO DataContracts erstellt, die in den Methoden Query, Update, Insert und Delete der DomainServices verwendet werden. Ich habe auch ein ViewModel, das alle LoadOperations ausführt. Und jetzt bin ich bei dem Teil meiner App, wo ich neue Entitäten zu den generierten EntitySets hinzufügen möchte, bin mir aber nicht sicher, was passieren wird, wenn ein Benutzer neu erstellt und den Schlüsselwert setzt; während ein anderer Benutzer eine ähnliche Entität mit demselben Schlüsselwert erstellt.Parallelität mit einem benutzerdefinierten DomainService

Ich habe in der Dokumentation gesehen, dass ein ObjectContext verwendet wird, aber in meiner Situation konnte ich den EntityFramework-Modellgenerator nicht verwenden. Also musste ich meine Datenverträge per Hand erstellen.

Also ich denke, meine Frage ist, gibt es eine Möglichkeit, wie ich andere Silverlight-Apps zwingen kann, Datenbankänderungen zu aktualisieren?

+0

EDIT: Einfachere Frage ... Wie ich oben sagte, habe ich einen benutzerdefinierten DomainService, der nur von DomainService erbt. Gibt es eine Möglichkeit, den DomainContext zu "aktualisieren"? – jhorton

Antwort

0

Wenn Sie eine Save-Operation in Ihrem DomainContext ausführen, wird sie je nach Ladeverhalten automatisch aktualisiert.

TicketContext.Load(TicketContext.GetTicketByIdQuery(ticketId), 
             LoadBehavior.RefreshCurrent, 
             x => 
             { 
              Ticket = x.Entities.First(); 
              Ticket.Load(); 
              ((IChangeTracking) TicketContext.EntityContainer).AcceptChanges(); 
             }, null); 

Hier habe ich die LoadBehavior zu RefreshCurrent gesetzt. Wenn Sie einen Speichervorgang ausführen, sendet RIA die Entität zurück über den Draht an den Client und führt die Änderungen mit der Entität zusammen, die bereits in Ihrem clientseitigen Kontext zwischengespeichert wurde. Ich weiß nicht, ob das deine Frage beantwortet oder nicht.

+0

Unter normalen Umständen würde es, aber ich konnte den Entity Data Model Generator nicht verwenden. Daher hatte ich keinen ObjectContext zur Verwendung mit LinqToEntity und musste daher viele der fehlenden Funktionen erstellen. Aber da diese Antwort die Frage zu beantworten scheint, werde ich sie markieren. Danke für die Hilfe Chris. – jhorton

+0

@jhorton Ich verwende hier keinen ObjectContext :-) Thi ist kein EF-Ding. So funktioniert RIA unabhängig vom Entity Framework. Ob Sie ADO.NET und POCO auf der Serverseite oder EF verwenden, spielt keine Rolle. Das Verhalten ist das gleiche - RIA erwartet, die Änderungen an den Client zurück zu senden und sie zusammenzuführen (wenn Sie RefreshCurrent festgelegt haben). Wie du herausgefunden hast, wenn du EF nicht benutzt, musst du selbst viel arbeiten :-) Ich habe jetzt ein paar Projekte mit POCO und ADO.NET auf der Serverseite gemacht. Es ist nicht so schlimm, wenn Sie herausfinden, was RIA mit den Daten zu tun erwartet. –