Gibt es irgendeine Möglichkeit, Sub-Entitäten in meine Abfrage auf dem Client aufzunehmen? Ich arbeite an einer Silverlight-Anwendung mit RIA-Diensten, einem DomainService und EntityFramework dahinter für meinen Datenbankzugriff. Um verknüpfte Entitäten beim Aufrufen des DomainService für Daten zu erhalten, muss ich die Metadaten des DomainService mit dem Attribut [Include] ändern und die Include() -Methode für den DomainService verwenden. (zB ObjectContext.Parent.Include („Child“))DomainService: .Include() auf Client
aber ich fühle mich wie mit einer Tonne von Methoden für jede Entität in meiner Domainservice alle verschiedene Kombinationen von zugehörigen Daten zu erhalten enden, manchmal, weil ich ‚ll braucht einen Benutzer und die damit verbundenen Rolle, manchmal nur mag ich den Benutzer ohne zugehörige Daten erhalten und so weiter ...
nach einigen RIA-Tutorials, wird empfohlen, die Funktion zu nutzen, gegeben von Expression Trees zum Ändern einer Abfrage auf der Clientseite. Gibt es eine Möglichkeit, auf dem Client statt der Get-Methode des DomainService einzubeziehen? Ich denke, das muss ein häufiges Problem bei der Arbeit mit DomanServices sein ?!
Während meiner Recherchen stolperte ich über eine ähnliche Frage, aber ohne Antwort und einen weiteren Thread, wo jemand sagte, dass es nicht möglich ist. Aber diese Antwort wurde im April 2009 veröffentlicht und seitdem gab es viele Veränderungen in der Entwicklung.
Danke
Vielen Dank für Ihre schnelle Antwort. Ich weiß darüber, aber die Include() -Methode, um verbundene Entitäten beizutreten, funktioniert nur eine der ObjectQuery in der DomainService. Der Punkt ist, dass ich den DomainService Code nicht viel ändern möchte. Das Beste wäre, wenn ich einfach beim generierten Code bleiben und alle Operationen auf der Seite des Abfrage-Clients ändern könnte. – Christoph
@Christoph - der ganze Sinn von '.Include' ist das eifrige Laden der Daten auf dem Server. Ich denke, was Sie tun sollten, ist ein Array von Zuordnungen zu akzeptieren, wenn Sie Ihren Domain-Service anrufen. Der Dienst kann dann eifrig geladen werden. ZB "var empsWithOrders = domainService.GetEmployees (new [] {" Orders "," Orders.Products "})'. Verwenden Sie eine Erweiterungsmethode in Ihrem Domäne-Dienst, um zu ".Include" zu konvertieren. Sie können dies mit Enums oder komplexen Generika typsicherer machen (ich benutze letzteres). – RPM1984
Okay, da ich nicht direkt durch meinen Anruf auf dem Client einschließen kann, scheint dies ein guter Workaround für mich. Danke für Ihre Idee. – Christoph