Gemeinsam verwendete Entitäten

Entitäten können von mehreren Domänendiensten innerhalb einer WCF RIA Services-Anwendung gemeinsam verwendet werden. Auf denselben Entitätstyp kann von einem Client aus über jeden dieser Domänendienste zugegriffen werden, solange sie sich innerhalb derselben Server-DLL befinden. Die Unterstützung für gemeinsam verwendete Entitäten umfasst eine Codegenerierung basierend auf potenziell unterschiedlichen Zuordnungen sowie benannte Updatemethoden in jedem der DomainService-Typen. Die gemeinsame Verwendung von Entitäten verbessert die Möglichkeiten zur Umgestaltung und Komposition in größeren RIA Services -Anwendungen, da die Zuordnung von Entitäten zum zugrunde liegenden Datenmodell vereinfacht wird.

Es gibt viele Szenarios, die die Notwendigkeit einer gemeinsamen Verwendung verdeutlichen. Betrachten Sie z. B. ein Szenario, in dem persönliche Mitarbeiterinformationen und Daten aus dem Personalwesen gemeinsam verwendet werden. Ein Mitarbeiter kann über einen DomainService für persönliche Mitarbeiterinformationen verfügbar gemacht werden. Mitarbeiter können auf diesem Wege persönlichen Daten ändern, z. B. ihre Adresse und Telefonnummer. Derselbe Mitarbeitertyp kann zusätzlich über einen DomainService für das Personalwesen verfügbar gemacht werden. Neben Personaldaten wie Urlaubszeiten und Lohnzahlungen werden bei dieser Ansicht auch Details wie Name und ID für eine Mitarbeiterentität angezeigt. Ein anderes Beispiel ist eine Produktentität, die sowohl für einen Einkaufsdienst als auch für einen Katalogdienst verwendet wird.

Beachten Sie, dass diese gemeinsame Verwendung von Entitäten nur innerhalb derselben Server-DLL unterstützt wird. Verschiedene Domänendienste können innerhalb der DLL-Grenze auf denselben Entitätstyp verweisen. Eine gemeinsame Verwendung desselben Entitätstyps aus verschiedenen Server-DLLs heraus wird nicht unterstützt. Anweisungen zur gemeinsamen Verwendung einer Entität durch mehrere Domänendienste finden Sie im Thema Exemplarische Vorgehensweise: Freigeben von Entitäten zwischen mehreren Domänendiensten.

Important Hinweis:
Die Unterstützung für gemeinsam verwendete Entitäten wurde in WCF RIA Services V1.0 SP1 eingeführt und wird in WCF RIA Services V1.0 nicht unterstützt.

Strukturieren der Cliententität

Mit der Einführung der gemeinsamen Verwendung von Entitätstypen durch mehrere Domänendienste nimmt jeder DomainService, der einen bestimmten Entitätstyp verwendet, Einfluss darauf, ob eine Serverentitätseigenschaft auf dem Client erzeugt wird oder nicht. Bei der erzeugten Cliententität handelt es sich um eine zusammengeführte Ansicht mit allen Entitätseigenschaften, die von den Diensten verwendet werden, die den Typ verfügbar machen. Im Ergebnis erstellt der Code-Generator einen Entitätstyp auf dem Client, mit dem auf jeden der Domänendienste in der Anwendungs-DLL zugegriffen werden kann. Die Struktur der Cliententität kann auch durch Verwendung des IncludeAttribute-Attributs und des ExcludeAttribute-Attributs beeinflusst werden. Eine Serverentitätseigenschaft mit dem IncludeAttribute wird auf dem Client in jedem Fall bereitgestellt. Eine Serverentitätseigenschaft mit dem ExcludeAttribute wird niemals auf dem Client bereitgestellt.

Benutzerdefinierte Updatemethoden und gemeinsam verwendete Entitäten

Benutzerdefinierte Updatemethoden in einem Domänendienst, auf die das [Update(UsingCustomMethod = true)]-Attribut angewendet wurde, werden im Clientdomänenkontext verfügbar gemacht, und die Kundenentität enthält alle ihr zugeordneten benutzerdefinierten Updatemethoden. Der Domänenkontext besitzt eine grundsätzliche Affinität zum Domänendienst, da aber die Entität ggf. nicht gemeinsam verwendet wird, müssen Benutzer wissen, welcher Domänenkontext beim Aufrufen einer benutzerdefinierten Updatemethode verwendet werden muss. IntelliSense sollte in diesem Fall die notwendige Unterstützung bereitstellen.

Beschränkungen der gemeinsamen Verwendung

Bei gemeinsam verwendeten Entitäten müssen drei Einschränkungen beachtet werden.

  1. Wie bereits erwähnt wird eine gemeinsame Verwendung desselben Entitätstyps aus verschiedenen Server-DLLs heraus nicht unterstützt.

  2. In einer Vererbungshierarchie muss, wenn Verzweigungen der Hierarchie gemeinsam verwendet werden, dieselbe Ebene der Hierarchie gemeinsam verwendet werden.

  3. Alle DomainService-Objekte, die eine bestimmte Entität gemeinsam verwenden, müssen in ihrer Metadatenbeschreibung dieses Typs übereinstimmen. Das heißt, dass alle benutzerdefinierten DomainServiceDescriptionProvider-Objekte für den Dienst dieselben Metadaten für den Typ angeben müssen.