Some of the comments about my Lazy Load post included discussion about how to handle Lazy Load scenarios in this cases. The answer is simple, I don't. I don't handle this scenario because I don't like the idea of a client application going directly against my database. This puts too much responsability at the client end, and leaving the server as a dumb data container. This also means that users can now connect to the database, which I really don't like.
My default architecture for a smart client application is a client application that talks to a set of web services, where usually there is a one service per form, or per functionality. In those cases, I don't worry about the usual SOA stuff, those are WS dedicated to the app. The application can make calls to the WS, and those make it explicit that a boundary is being crossed.