Thank you for the response Gunnar. Indeed I haven't thought of this 
scenario. I'll go with some workaround, probably querying the type 
client-side (after force-evaluation of pre-filters), furtunately the 
collection is never longer than ~30 entities.

On Monday, December 23, 2013 10:24:47 PM UTC+1, Gunnar Liljas wrote:
>
> There is no hierarchical relation through PersonPlan. The OperatorPlans 
> collection could very well be a completely different relation, and 
> NHibernate certainly hopes that it is. Consider what would/should happenf 
> you remove an OperatorPlan from either of the collections. For things to be 
> OK, the other collection would have to be notified. A bit too advanced for 
> comfort.
>
> Do you really need both? 
>
>
> 2013/12/21 Michał Gajek <[email protected] <javascript:>>
>
>> Hi, I'm having a "Day" domain model which has some related 
>> "PersonalPlans". There are also classes which inherit from PersonalPlan 
>> (like OperatorPlan). I'd like to be able to retrieve the collection of, 
>> lets say, OperatorPlans. How do I map it properly?
>>
>> (i'm skipping primary keys and other fields unimportant in this question.)
>>
>> domain classes:
>>
>> public class Day {
>>     public virtual IList<PersonPlan> PeoplePlans { get; set; }}public class 
>> PersonPlan{
>>     public virtual Day Day { get; set; }}public class OperatorPlan: 
>> PersonPlan {} 
>>
>> mappings:
>>
>> public class OperatorPlanMap: SubclassMap<OperatorPlan> {
>>     public OperatorPlanMap() {
>>     // some stuff
>>     }}
>> public class PersonPlanMap: ClassMap<PersonPlan> {
>>     public PersonPlanMap() {
>>         Id(x => x.Id);
>>         References(x => x.Day).Not.Nullable();
>>     }}
>> public class DayMap: ClassMap<Day> {
>>     public DayMap() {
>>         // ...
>>         HasMany(x => x.PeoplePlans);
>>     }}
>>
>> now whenever I create a new PersonPlan or one of it's subtypes (like 
>> OperatorPlan), it is available through Day.PeoplePlans.
>>
>> Now I'd like to be able to map a collection of *specific type only*, 
>> like so:
>>
>> public class Day {
>>     public virtual IList<PersonPlan> PeoplePlans { get; set; }
>>     public virtual IList<OperatorPlan> OperatorPlans { get; set; }}
>>
>> *How do I map* OperatorPlans *correctly?*
>>
>> Putting simply HasMany(x => x.OperatorPlans) causes the database table 
>> to be extended with one new column, Day_Id. It seems that the 
>> "hierarchical" relation (through PersonPlan) is being ignored in that case.
>>  
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "nhusers" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> To post to this group, send email to [email protected]<javascript:>
>> .
>> Visit this group at http://groups.google.com/group/nhusers.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/nhusers.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to