2010-02-22 12 views
8

In unserer Schichtenanwendung greifen wir über WCF-Aufrufe auf die Datenbank zu. Wir erstellen und disponieren Kontexte pro Anfrage. Auch wir verwenden den POCO-Ansatz.
Meine Frage ist, in reinem POCO-Modell (vollständig persistent unwissende POCOs) ist es möglich, die Änderungen zu verfolgen, während wir Kontext pro Anfrage erstellen und entsorgen (wie vorherigen Kontext in diesem Service-Aufruf angeordnet ist)? Wenn ja, wie geht EF mit dieser Situation um? Soweit ich das sehe, können 2 Mechanismen (Snapshot-basierte Änderungsverfolgung und Benachrichtigungsbasierte Änderungsverfolgung mit Proxies) nicht damit umgehen? Wenn nicht, wie sollten wir mit dem Kontext umgehen, damit wir die Änderungen verfolgen können?Entity Framework: Änderungsverfolgung in SOA mit POCO-Ansatz

Antwort

2

Leider werden Sie in Entity Framework v1.0 keine einfache Lösung finden. Es gab viel discussion und kleine Auflösung. Es ist eines der vielen bekannten Probleme mit EF v1.0 und auf die eine oder andere Weise werden Sie am Ende viel Code schreiben müssen, um damit umzugehen.

In .NET 4.0 hat das ADO.NET-Team Self-Tracking Entities eingeführt, um dieses Problem anzugehen.

6

Ich würde sagen:

nicht selbst Tracking-Einheiten in einer reinen SOA-Umgebung Verwenden Sie: Die selbst Tracking-Einheiten funktionieren nur, wenn Ihre Kunden die generierten Proxy-Klassen verwenden.

Wenn Sie SOA nach dem Buch tun, können Sie nicht erwarten, dass Ihre Clients .Net oder sogar mehr .Net 4.0 sind; Welches ist das einzige Szenario , in dem Self-Tracking-Entitäten funktionieren. Ihre Dienste werden für andere Clients nutzlos sein.

Meine Nur 2 Cent, Grüße, Koen

3

Self-Tracking-Einheiten in der Tat dieses Problem nicht lösen, wenn Sie das Modell des Teilens mit dem Kunden der Lage sind, wie durch das Bezugs erzeugt unter Verwendung von Metadaten gegenüber.

Zusammenfassung der STEs und verweisen sie vom Client, haben Sie Zugriff auf die Verfolgung getrennt vom Kontext.

+0

In Bezug auf Ihre abgekürzten Verweise auf * "Self-Tracking Entities" *, beachten Sie bitte, dass für Abkürzungen, die verwendet werden sollen, zuerst das abgekürzt werden soll. – XenoRo