2009-03-05 1 views
0

Die Art von Flexibilität, die Activetrecord unserem DB-Design verleiht, betrachten wir für unser DAL- und Build-Modell. Wir werden darüber hinaus einen WCF-Service erstellen. Gibt es irgendwelche Probleme oder Kompatibilitäten bei der Verwendung von NHI-basierten Castle Activetrecord? Besonders wenn es sich um den DataContractSerializer handelt, den WCF verwendet. Da ActiveRecord IQueryable nicht verwenden wird, ist es zu viel zu übersehen?Gibt es irgendwelche Probleme bei der Verwendung von Castle ActiveRecord/NHibernate mit WCF?

Antwort

1

Serialisiertes Objekt = losgelöstes Objekt. Und sobald Sie ein Objekt über WCF über die Leitung senden, haben Sie das.

Das große Problem ist, dass Sie sich mit NH2ibernate beschäftigen werden, wenn WCF freistehende Objekte sind, was Sie zwingt, Ihren Code etwas anders zu schreiben. Sie verlieren NHibernate Caching-Funktionen und Lazy Loading-Funktionen. Sie müssen Ihre Aggregate vorladen, bevor Sie sie über die Leitung versenden.

Natürlich ist das alles problematisch, wenn Sie stattdessen Datenübertragungsobjekte verwenden, aber da Sie ActiveRecord erwähnt haben, vermute ich, dass das nicht der Plan war.

Ich bin vielleicht weg von der Basis hier. Hoffentlich kann ein ActiveRecord Guru mehr Details geben.

1

Obwohl nicht spezifisch für WCF und Castle Active Record ich biete eine Warnung an.

Stellen Sie sicher, dass auf der Persistenzebene keine CASCADING DELETEs definiert sind. Lassen Sie ActiveRecord mit denen umgehen, die sonst für Sie auftauchen. Sie werden dann auf ärgerliche Fehler stoßen, wenn Sie Dinge erhalten, die nicht sehr klar sind.

Wenn Sie häufig löschen möchten, sollten Sie vorsichtig mit ActiveRecord sein, da die Castle Implementierung keine Massenlöschung unterstützt, sondern stattdessen eine kostspielige Schleife über jedes zu löschende Element und einzelne Löschungen erfordert passieren.