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