Yes. If you know what you are doing, you can usually get away with it. I
still don't suggest it though.

I don't really follow your process. You've lost me on which objects are
persisted & loaded, which are persisted but not loaded, and which aren't
persisted. Perhaps some code would make more sense.

On Fri, Apr 23, 2010 at 7:02 PM, Vladan Strigo <[email protected]>wrote:

> So, in facr...if I know what I'm doing, it can work?!
>
> I am asking for another reason, I've built some time ago an automatic
> fetcher and binder of entities based on form post data...basically if
> you have in your form the following fields:
>
> Prospect.Id
> Prospect.User.Id
> Prospect.Order.Id
>
> it will load object from db "Prospect" by its id in "Prospect.Id",
> then proceed to load and assign its children..."Prospect.User", load
> it by looking at "Prospect.User.Id" field, "Prospect.Order", by
> looking at "Prospect.Order.Id" field.
>
> now, if the Prospect.User and Prospect.Order are different than the
> originally assigned ones, then on commit of transaction this will be
> triggered automatically as an Update statement(s).
>
>
> My question to myself now was, what to do in this step "load and
> assign"...assign it on both ends or just one (e.g. assign it only on
> Prospect.User, or also on User.Prospects)...this gets more complicated
> if I have a Set on the other side, which requires another load or an
> eager load of all "User.Prospects".
>
>
> Do you understand my dilema?
>
>
> Vladan
>
> On Apr 23, 10:26 pm, Jason Dentler <[email protected]> wrote:
> > Vladan,
> >
> > RDBMSs don't have a concept of bi-directional one-to-many. Many to one
> > relationships don't exist in the database separate from the one to many.
> As
> > you pointed out, in our object model, we can have differences between the
> > one to many and the many to one.
> >
> > To handle this mismatch between what we can do with the object model and
> > what the database will allow, NHibernate fakes it. It only looks at one
> of
> > the object model relationships (either the one-to-many or the
> many-to-one)
> > when it stores the database relationship.
> >
> > We have inverse="true" in our mappings to tell NHibernate to look at "the
> > other side" when storing the relationship.
> >
> > In your object model, It's best just to maintain both sides of the
> > relationship so you don't have to worry later if it's set properly. Like
> > Roger pointed out, create a simple method that sets both sides of the
> > relationship.
> >
> > Thanks,
> > Jason
> >
> > On Fri, Apr 23, 2010 at 2:15 PM, Vladan Strigo <[email protected]
> >wrote:
> >
> >
> >
> >
> >
> > > I mean when adding/removing them....
> >
> > > by all docs it says when tying them initially together that you must
> > > do:
> >
> > > entity1.entity2 = newEntity2
> > > newEntity2.Entities1.Add(entity1)
> >
> > > but when I look at the nh profiler, it still does the update in the db
> > > if I only do this:
> >
> > > entity1.entity2 = newEntity2
> >
> > > (so tie it only on one end)
> >
> > > so, I am wondering...how come it works?! and what are the cases where
> > > it doesn't?
> >
> > > Vladan
> >
> > > On Apr 23, 3:15 pm, Roger Kratz <[email protected]> wrote:
> > > > Do you mean when loading a bidirectional ref? No, you don't need to
> "tie"
> > > them together. You need to map both ends though - search for
> "bidirectional"
> > > in the docs.
> >
> > > > Do you mean when adding/removing items in a bidirectional ref in your
> > > domain/RAM? Yes, luckily. IMO POCO/PI is a good thing. You can help
> yourself
> > > writing something like someNewUser.Add(prospect) though and set both
> ends
> > > there.
> >
> > > > Do you mean when having a unidirectional ref? No, not at all.
> >
> > > > -----Original Message-----
> > > > From: [email protected] [mailto:[email protected]] On
> > > Behalf Of Vladan Strigo
> > > > Sent: den 23 april 2010 14:02
> > > > To: nhusers
> > > > Subject: [nhusers] Re: why do we need to connect relation on both
> side of
> > > related entites?
> >
> > > > anyone?
> >
> > > > On Apr 23, 11:04 am, Vladan Strigo <[email protected]> wrote:
> > > > > So I have a typical one to may:
> >
> > > > > Prospect...has *one* User
> >
> > > > > User...has *many* Prospects
> >
> > > > > I do a load of Prospect, load of an "User"...then tie them
> together:
> >
> > > > > Prospect.User = someNewUser
> > > > > someNewUser.Prospects.Add(Prospect)
> >
> > > > > My question is...why is this second part needed? I've seen it in
> books
> > > > > over the years as a textbook example, but also seen that it works
> > > > > without it sometimes.
> >
> > > > > So I am confused, do I need to connect the relation on both sides,
> and
> > > > > if so...why?!
> >
> > > > > Thanks!
> > > > > Vladan
> >
> > > > > --
> > > > > You received this message because you are subscribed to the Google
> > > Groups "nhusers" group.
> > > > > To post to this group, send email to [email protected].
> > > > > To unsubscribe from this group, send email to
> > > [email protected]<nhusers%[email protected]>
> <nhusers%[email protected]<nhusers%[email protected]>>
> > > .
> > > > > For more options, visit this group athttp://
> > > groups.google.com/group/nhusers?hl=en.
> >
> > > > --
> > > > You received this message because you are subscribed to the Google
> Groups
> > > "nhusers" group.
> > > > To post to this group, send email to [email protected].
> > > > To unsubscribe from this group, send email to
> > > [email protected]<nhusers%[email protected]>
> <nhusers%[email protected]<nhusers%[email protected]>>
> > > .
> > > > For more options, visit this group athttp://
> > > groups.google.com/group/nhusers?hl=en.
> >
> > > > --
> > > > You received this message because you are subscribed to the Google
> Groups
> > > "nhusers" group.
> > > > To post to this group, send email to [email protected].
> > > > To unsubscribe from this group, send email to
> > > [email protected]<nhusers%[email protected]>
> <nhusers%[email protected]<nhusers%[email protected]>>
> > > .
> > > > For more options, visit this group athttp://
> > > groups.google.com/group/nhusers?hl=en.
> >
> > > --
> > > You received this message because you are subscribed to the Google
> Groups
> > > "nhusers" group.
> > > To post to this group, send email to [email protected].
> > > To unsubscribe from this group, send email to
> > > [email protected]<nhusers%[email protected]>
> <nhusers%[email protected]<nhusers%[email protected]>>
> > > .
> > > For more options, visit this group at
> > >http://groups.google.com/group/nhusers?hl=en.
> >
> > --
> > You received this message because you are subscribed to the Google Groups
> "nhusers" group.
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to
> [email protected]<nhusers%[email protected]>
> .
> > For more options, visit this group athttp://
> groups.google.com/group/nhusers?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups
> "nhusers" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<nhusers%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/nhusers?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to