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
-~----------~----~----~----~------~----~------~--~---