Out of pure curiosity, what's your solution?

On Tue, Aug 4, 2009 at 11:04 AM, JamesSpibey <[email protected]> wrote:

>
> I think I might have a solution actually but I'll ask on nhibernate's
> list anyway. Thanks for replying
>
> On Aug 3, 10:15 pm, Paul Batum <[email protected]> wrote:
> > Since this is a question about mapping complex hierarchies and is not
> about
> > fluent nhibernate's behavior per se, I suggest you also ask on the
> > nhibernate mailing list.
> >
> > On Mon, Aug 3, 2009 at 6:23 PM, JamesSpibey <[email protected]>
> wrote:
> >
> > > Hi,
> >
> > > I'm trying to map quite a complex hierarchy and I was hoping someone
> > > here might be able to give me some guidance? I've tried to represent
> > > it below but note that I am not using the real class names to make it
> > > clearer.
> >
> > > Class Grandparent
> > >  Property Parents As IList(Of Parent)
> > > End Class
> >
> > > Class Parent
> > >  Property Children As IList(Of Child)
> > >  Property Parent As GrandParent
> > > End Class
> >
> > > Class MustInherit Child
> > >  Property GrandParent As GrandParent
> > >  Property Parent As Parent
> > > End Class
> >
> > > Class Boy
> > >  Inherits Child
> > > End Class
> >
> > > Class Girl
> > >  Inherits Child
> > > End Class
> >
> > > OK, simple enough. This is mapped successfully using FNH, with the
> > > only complexity being that Boy and Girl are mapped using
> > > DiscriminateSubClassesOnColumn.
> >
> > > Having done all that, I now need to do something like the following
> >
> > > Class SpecialGrandparent
> > >  Inherits Grandparent
> > >  Public Property AdditionalInfo As String
> > > End Class
> >
> > > Class SpecialParent
> > >  Inherits Parent
> > >  Public Property AdditionalInfo As String
> > > End Class
> >
> > > Class SpecialChild
> > >  Inherits Child
> > >  Public Property AdditionalInfo As String
> > > End Class
> >
> > > The complexity comes from the fact that I need the SpecialGrandParent
> > > to look and behave like a normal GrandParent class, but also be able
> > > to access the 'AdditionalInfo' when needed.
> >
> > > So, I thought I'd solved this, and this is how I did it. (I'll just
> > > show the example for one class but you'll get the idea)
> >
> > > Public Interface IGrandParent
> > >  Property Parents  As IList(Of IParent)
> > > End Interface
> >
> > > Class Grandparent
> > >  Implements IGrandParent
> > >  Property Parents  As IList(Of IParent) Implements
> > > IGrandParent.Parents
> > > End Class
> >
> > > Class SpecialGrandparent
> > >  Implements IGrandParent
> >
> > >  Private _innerGrandParent As IGrandParent = New GrandParent
> >
> > >  Property Parents  As IList(Of IParent) Implements
> > > IGrandParent.Parents
> > >    Return _innerGrandParent.Parents
> > >  End Property
> >
> > >  Public Property AdditionalInfo As String
> > > End Class
> >
> > > This all works great but when I come to the mapping, I can't figure
> > > out what's best to do. The way I have it now is that the
> > > _innerGrandParent property is exposed as a public Property which I can
> > > then map using map.References(). This ensures that the
> > > _innerGrandParent field gets populated ok which is then used to proxy
> > > all the fields in the interface.
> >
> > > However, if I then write a query which uses SpecialGrandParent.Parents
> > > for example, I get an error because the Parents property hasn't been
> > > explicitly mapped (it's being proxied from the _innerGrandParent
> > > field).
> >
> > > Sorry for the long post but I'm so close to having this work, but yet
> > > so far!
> >
> > > Thanks
> >
> > > James
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Fluent NHibernate" 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/fluent-nhibernate?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to