I'll follow up on this. I have just noticed an odd thing which might
be related to what we were talking about.

I have an entity Post which holds an IList of CommentPost and in the
mapping file it's a bag (it could be set, but that's not the
question).

When my client get a Post entity from the server (through WCF), the
type of the collection of CommentPost in the Post is
NHibernate.Collection.Generic.PersistentGenericBag<Metrica.CommentPost>

Then the client makes some modifications to the Post or the
CommentPost sends everything back to the server, the server persists
the data OK, and returns the Post entity back to the client. But
here's the issue, the CommentPost collection of the Post is now
Metrica.CommentPost[0] which is quite odd.

Is this a WCF issue ?

On 7 avr, 09:43, graphicsxp <graphic...@googlemail.com> wrote:
> Yes that's for the benefits of using DTO's, but I'm more concerned
> with the drawbacks :p
>
> How do I map my entities to my dto's, and when I send the dto back
> from the client to the server, how to I recreate an entity with the
> full data so that nhibernate can detect only the changes made by the
> client ?
>
> On 7 avr, 05:59, Davy Brion <ral...@davybrion.com> wrote:
>
> > +1
>
> > if you keep your entities within your service boundaries you avoid the whole
> > lazy-load/proxying issue, and you also have the ability to evolve your
> > domain model without breaking clients.
>
> > On Mon, Apr 6, 2009 at 7:07 PM, Greg Young <gregoryyou...@gmail.com> wrote:
>
> > > Not exposing entities on the wire is a best practice with any tool.
>
> > > Even if you control both ends it is still in general a bad idea in all
> > > but the most simplistic of examples.
>
> > > Greg
>
> > > On Mon, Apr 6, 2009 at 1:04 PM, Dotan N. <dip...@gmail.com> wrote:
> > > > those best practices apply to entity framework or did MS build in some
> > > sort
> > > > of transparent integration between EF and wcf?
>
> > > > On Mon, Apr 6, 2009 at 6:37 PM, John Rayner <john.ray...@conchango.com>
> > > > wrote:
>
> > > >> Please let everyone know how that works out for you.  Using NHib to
> > > >> drive WCF services is of interest to many people and there are very
> > > >> few clear best practices at the moment.
>
> > > >> On Apr 6, 2:11 pm, graphicsxp <graphic...@googlemail.com> wrote:
> > > >> > Hi John
>
> > > >> > I tend to agree with you, although I can see the benefits of using
> > > >> > DTO's as well.  If go back to your first reply, you suggested turning
> > > >> > off lazy-loading in the mapping.
> > > >> > I don't think it's a good idea because some of my clients won't use
> > > >> > WCF and could benefit from lazy-loading.  Therefore, how about I turn
> > > >> > on/off lazy loading at DAO level ? I could have some methods which
> > > >> > would request an entity using _session.get<myentity>(id) and others
> > > >> > (for WCF) that would make use of ICriteria  to join on the dependent
> > > >> > tables in order to load everything at once... It seems to be my
> > > >> > favourite idea (at least until the next hour ;p )
>
> > > >> > On 6 avr, 13:01, John Rayner <john.ray...@conchango.com> wrote:
>
> > > >> > > This is good advice ... if you have WCF clients which are
> > > externally-
> > > >> > > controlled systems.  If you control both the service and its
> > > consumer,
> > > >> > > and you expect them to evolve in sync with each other, then I think
> > > >> > > the choice is less clear.
>
> > > >> > > On Apr 2, 4:06 pm, James Hicks <jhicks0...@gmail.com> wrote:
>
> > > >> > > > Don't expose internal types to external systems.  Use coarse
> > > grained
> > > >> > > > messages and DTOs to model the external view of your system.  The
> > > >> > > > small
> > > >> > > > price you pay in maintaining this extra layer buys you the 
> > > >> > > > ability
> > > >> > > > to change
> > > >> > > > your internal system without affecting the clients of the 
> > > >> > > > service.
>
> > > >> > > > If you are insistent on exposing your entities via WCF, turn off
> > > >> > > > lazy
> > > >> > > > loading.  You may be able to generate your own proxies that are
> > > >> > > > smart enough
> > > >> > > > to go back to the WCF service to pull down any lazy loaded
> > > >> > > > collections.
>
> > > >> > > > James
>
> > > >> > > > On Tue, Mar 31, 2009 at 12:08 PM, graphicsxp
> > > >> > > > <graphic...@googlemail.com>wrote:
>
> > > >> > > > > Hi,
>
> > > >> > > > > I'm struggling to get WCF Service working with NHibernate.
>
> > > >> > > > > I have a  Post entity which holds a collection of Publication
> > > >> > > > > entities
> > > >> > > > > (lazy loaded). When the collection is loaded and the Post 
> > > >> > > > > entity
> > > >> > > > > returned to the client via WCF, there is an exception :
>
> > > >> > > > > Type 'PublicationProxyc00e5dcd4dce4ee889643285aadb5575' cannot
> > > >> > > > > have
> > > >> > > > > DataContractAttribute attribute Namespace set to null.
>
> > > >> > > > > The type PublicationProxy was created by NHibernate but the
> > > >> > > > > Publication class looks like :
>
> > > >> > > > > [DataContract(Name = "Publication")]
> > > >> > > > >  public class Publication : IPublication
> > > >> > > > >  {
> > > >> > > > >  .
> > > >> > > > >  .
> > > >> > > > >  .
> > > >> > > > >  }
>
> > > >> > > > > What can I do to workaround this issue ?- Hide quoted text -
>
> > > >> > > > - Show quoted text -- Hide quoted text -
>
> > > >> > - Show quoted text -
>
> > > --
> > > It is the mark of an educated mind to be able to entertain a thought
> > > without accepting it.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to nhusers@googlegroups.com
To unsubscribe from this group, send email to 
nhusers+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to