Alternatively, unless your Address must have it's own identity,
perhaps it should be mapped as a component?
http://nhforge.org/doc/nh/en/index.html#components

many-to-one might sound surprising but if you have a table structure like:
Person (Id, AdressId, ...), Address(Id, ...)
This represents a relational many-to-one, even if you don't actually
reuse address instances for multiple persons etc.

/Oskar


2012/12/27 Gunnar Liljas <[email protected]>:
> Can one Address instance be shared by several Persons and/or
> Subsidiaries? In that case, you clearly don't have a one-to-one
> relation. One-to-one is very rare.
>
> What you want is very likely a many-to-one mapping.
>
> /G
>
> 2012/12/27 Viktor Engelmann <[email protected]>:
>> Hi everyone,
>>
>> I'm relatively new to NHibernate, but I'm a graduate computer scientist and
>> after nearly a whole day of searching for an answer to my problem, I'm
>> asking myself
>>
>> "How can this be so hard!?"
>>
>> I have multiple classes, say class A and class B, where A has an instance of
>> B as property like
>> public class A : SomeBaseClass
>> {
>>    virtual public Int64 ID {get; set;}
>>    virtual public string foo {get; set;}
>>    virtual public B my_B_instance {get; set;}
>> }
>> public class B : SomeBaseClass
>> {
>>    virtual public Int64 ID {get; set;}
>>    virtual public string bar {get; set;}
>> }
>>
>> as you might notice, B does NOT have a reference to an A.
>>
>> Now I want to map the classes. First I tried something like
>>    <property name="my_B_instance"/>
>> because the Getting Started Tutorial is too damn busy confusing the
>> NHibernate tutorial for an NUnit tutorial (and getting me confused about
>> which code is for NHibernate and which code is for NUnit) to mention that
>> "property" is only for primitive types.
>> It took me hours to figure out why I got all the "Could not determine the
>> type of ..." exceptions!
>>
>> So with far too much googeling, I found out, that
>>    <one-to-one .../>
>> should be the answer, BUT before even trying this, I found that one-to-one
>> mappings must be bidirectional (so B would HAVE TO have a reference to an
>> A).
>> In my project, A=Person, B=Address and other classes like Subsidiary also
>> have an Address, so referencing Person in Address would be complete
>> nonsense.
>>
>> I got lost in the 500 page list of options
>>
>> Other "solutions" i have found, suggest using composite-id's or that my
>> classes should implement IUserType. In both cases I would have to override
>> the methods that NHibernate calls.
>> I will not do that, because handling a fundamental thing like a reference to
>> one class as property of another class CAN NOT BE SO HARD!
>>
>> And I haven't even started looking into inheritance. God have mercy on my
>> soul!
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "nhusers" group.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msg/nhusers/-/ocaC5W0CZtgJ.
>> 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.
>
> --
> 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.
>

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