Thanks. I just found HasMany( x => x.Children ).Component( ... ). I'll try it out!
Thanks again, Kevin On Dec 29, 6:08 pm, Hudson Akridge <hudson.akri...@gmail.com> wrote: > You're on the right track. Composite element in a collection should > work for your needs. I don't recall off the top of my head what the > fnh syntax is, but look at something like .hasmany().ascompositeelement > () or something like that. (I'm on my mobile atm otherwise I'd look it > up for you) > > On Dec 29, 2009, at 3:53 PM, kberridge <kevin.w.berri...@gmail.com> > wrote: > > > > > I found an article on what you suggest with doing a HasMany() with a > > composite element: > >http://blogs.hibernatingrhinos.com/nhibernate/archive/2008/08/15/a-fl... > > > It uses a method called HasManyComponent which doesn't seem to exist > > in the current release of Fluent. But this is an old article. Is > > there a new way to do this? > > > As you guessed, I want my child to not exist without a parent. And I > > want to be able to cause the child to be inserted by simply adding it > > into the Parent's collection, since that most closely represents that > > requirement. Am I on the right track here? > > > Thanks, > > Kevin > > > On Dec 29, 3:19 pm, Hudson Akridge <hudson.akri...@gmail.com> wrote: > >> Inverse is only required if it's got a bi-directional back. Inverse > >> at this > >> point would be the opposite of what we'd want, we want to declare the > >> collection side to be the parent. > > >> The way a typical HasMany association works is that it's the child > >> side that > >> saves the reference back to the parent, so there's an insert that > >> gets fired > >> to insert the child, then an update on the child side that updates > >> the > >> parent with the key reference. > > >> Failing that, you may actually be wanting to do a HasMany() with a > >> composite > >> element, rather than map the child in a separate mapping without a > >> parent. > >> That is how a true parent/child works, the child cannot exist > >> without the > >> parent. > > >> If you want the child to exist without the parent then it needs to > >> have a > >> reference back to the parent, otherwise you will encounter a > >> situation where > >> the child attempts to be deleted, but it can't be because of the FK > >> violation to the parent, because the parent hasn't been told the > >> child needs > >> to be deleted out of the collection, and so you'll get a failure in > >> NH > >> stating that an object you're attempting to delete will be re-saved > >> via a > >> cascade. > > >> To sum: > >> Child exist without parent - Bi-Directional > >> Child exist only with parent - composite element or bi-directional > > >> To quote the NHibernate documentation, 6.4: > > >>> Very Important Note: If the <key> column of a <one-to-many> > >>> association is > >>> declared NOT NULL, NHibernate may cause constraint violations when > >>> it > >>> creates or updates the association. To prevent this problem, you > >>> must use > >>> a bidirectional association with the many valued end (the set or > >>> bag) > >>> marked as inverse="true". See the discussion of bidirectional > >>> associations > >>> later in this chapter. > > >> That's your scenario problem explained. > > >> On Tue, Dec 29, 2009 at 2:05 PM, kberridge > >> <kevin.w.berri...@gmail.com>wrote: > > >>> Nope, didn't change the behavior. > > >>> Thanks, > >>> Kevin > > >>> On Dec 29, 2:58 pm, Eric Ridgeway <ang3lf...@gmail.com> wrote: > >>>> Try setting inverse on the has many mapping and see if that helps > > >>>> On Dec 29, 2009 11:54 AM, "kberridge" <kevin.w.berri...@gmail.com> > >>> wrote: > > >>>> I have a simple parent child relationship where the parent class > >>>> has a > >>>> collection of children, but the child class doesn't have a > >>>> reference > >>>> to the parent. I'm mapping it with a HasMany. > > >>>> In my database, the foreign key column does not allow nulls, but > >>>> when > >>>> NH tries to insert into these tables it is bombing out because it's > >>>> trying to insert the child first (with null in the FK col) and come > >>>> back and update the FK column after it inserts the parent. > > >>>> I found an earlier message on this group that briefly discusses > >>>> this > >>>> issue: > >>>http://www.mail-archive.com/fluent-nhibernate@googlegroups.com/msg051 > >>> ... > > >>>> Is the only way I can get around this problem still to add the > >>>> reference to the parent on the child class? > > >>>> Thanks, > >>>> Kevin Berridge > > >>>> -- > > >>>> You received this message because you are subscribed to the > >>>> Google Groups > >>>> "Fluent NHibernate" group. > >>>> To post to this group, send email to fluent-nhibernate@googlegroups.com > >>>> . > >>>> To unsubscribe from this group, send email to > >>>> fluent-nhibernate+unsubscr...@googlegroups.com<fluent-nhibernate > >>>> %2Bunsubscr i...@googlegroups.com><fluent-nhibernate%2Bunsubscr > >>> i...@googlegroups.com> > >>>> . > >>>> For more options, visit this group athttp:// > >>> groups.google.com/group/fluent-nhibernate?hl=en. > > >>> -- > > >>> You received this message because you are subscribed to the Google > >>> Groups > >>> "Fluent NHibernate" group. > >>> To post to this group, send email to fluent-nhibernate@googlegroups.com > >>> . > >>> To unsubscribe from this group, send email to > >>> fluent-nhibernate+unsubscr...@googlegroups.com<fluent-nhibernate > >>> %2Bunsubscr i...@googlegroups.com> > >>> . > >>> For more options, visit this group at > >>>http://groups.google.com/group/fluent-nhibernate?hl=en. > > >> -- > >> - Hudsonhttp://www.bestguesstheory.comhttp://twitter.com/ > >> HudsonAkridge > > > -- > > > You received this message because you are subscribed to the Google > > Groups "Fluent NHibernate" group. > > To post to this group, send email to fluent-nhibernate@googlegroups.com > > . > > To unsubscribe from this group, send email to > > fluent-nhibernate+unsubscr...@googlegroups.com > > . > > For more options, visit this group > > athttp://groups.google.com/group/fluent-nhibernate?hl=en > > . -- You received this message because you are subscribed to the Google Groups "Fluent NHibernate" group. To post to this group, send email to fluent-nhibern...@googlegroups.com. To unsubscribe from this group, send email to fluent-nhibernate+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/fluent-nhibernate?hl=en.