Berücksichtigen Sie, dass ich übergeordnete, untergeordnete Beziehungsklassen und Zuordnungen habe. Ich verwende NHibernate, um das Objekt aus der Datenbank zu lesen und WCF zu verwenden, um das Objekt über die Leitung zu senden.
[DataContract]
markiert ist, kann sie nicht serialisiert werden, da es sich bei der Eigenschaft um einen Lazy-Load-Proxy anstelle eines real bekannten Typs handelt. lazy=false
oder lazy=true
funktioniert nicht. Der Ehemalige wird bereitwillig alle Beziehungen abrufen, letzterer wird einen Proxy erstellen. Aber ich möchte stattdessen nichts - ein null
wäre das Beste. null
für die Referenzen zu bekommen, die ich nicht holen will. Ein Nullwert, aber nicht nur ein Proxy. Dies macht WCF glücklich und verschwendet weniger Zeit, um einen Lazy-Load-Proxy zu erstellen. GetObjectToSerialize
, ich beobachte nie, dass ein Proxy über GetObjectToSerialize
übergeben wird, so dass keine Chance besteht, den Proxy zu deaktivieren. Nach dem Lesen der Kommentare, mehr surfen im Internet ...
Es scheint mir, dass DTO den größten Teil der Berechnung auf die Serverseite verlagern würde. Aber für das Projekt, an dem ich arbeite, ist der Client in 50% der Fälle "intelligenter" als der Server, und der Server ist mehr wie ein Datenspeicher mit Validierung und Verifizierung. Obwohl ich zustimme, ist der Server nicht gerade dumm - ich muss entscheiden, wann ich die zusätzlichen Referenzen schon holen soll, und DTO wird dies sehr explizit machen.
Vielleicht sollte ich nur den Schmerz nehmen. Ich kannte Ссылка vorher nicht, das motiviert mich ein wenig mehr, um den Schmerz zu nehmen.
Auf der anderen Seite fand ich Ссылка , die mit IDataContractSurrogate.GetObjectToSerialize
zu arbeiten scheint.
Ich bin auf ähnliche Probleme mit der Leistung gestoßen. Stattdessen habe ich die gewünschten Informationen vorab geladen, indem ich einen expliziten Aufruf an die Datenbank mithilfe eines DetachedCriteria .
So wie du es tust, würde ich wahrscheinlich so etwas tun.
%Vor%Dann würde ich von meiner Fassade jene Entitäten mit den Eigenschaften erhalten, die keine Null-Attribute auf der Kind-Eigenschaft haben
%Vor%Dann hätte ich alle ParentClass-Entities, die eine Null-Eigenschaft haben.
Anstatt einen Treffer zu machen, indem ich die DB ständig nach Informationen frage, speichere ich sie im Speicher, damit sie für mich bereit ist.
Dies ist nur eine alternative Lösung für DTOs, viel Glück:)
Tags und Links wcf c# lazy-loading nhibernate