It's been a while since I've done one-to-one's, but I'll give this a try :) I believe you need to have a "constrained" setting for one of the sides to start with, this denotes which side and how the one-to-one saves.
I'm actually not entirely sure that this mapping is legal for one-to-one, because as far as I'm aware, and have implemented in the past, the primary key's of both entities must be identical, and so you map the "child" id generation to be Foreign, and set it to the property of the one-to-one association. But with a subclass, by definition, they can't be, since they exist in the same table structure, and will collide ID's. What you may be looking to do here is use two one-to-many associations on both sides. I don't know what the design is you're shooting for, but one other red flag for me is two subclasses having essentially a single entity reference to the other. Typically this means those two classes can be merged, and you might just want to persist an enum that changes what type of Activity a user is dealing with. On Thu, Jul 16, 2009 at 3:30 PM, Berryl Hesh <[email protected]> wrote: > > Hello: > > I was expecting the HasOne relationship that is part of my inheritance > mapping to not let me save a ProjectActivity unless it's Project > attribute exists in the db (Project is a mapped Entity also). Is there > an option I can use to enforce this? > > Thanks! > B > > Domain inheritance hierarchy > ------------------------------------------------- > public abstract class Activity : Entity { ... } > > public class ProjectActivity : Activity { > public virtual Project Project { get; private set; } > } > > public class AccountActivity : Activity { > public virtual Account Account{ get; private set; } > } > > Mapping > ----------------------- > public class ActivityMap : IAutoMappingOverride<Activity> > { > public void Override(AutoMap<Activity> mapping) > { > .......... > > mapping.DiscriminateSubClassesOnColumn("ActivityType") > .SubClass<ProjectActivity>("P", > x => x.HasOne(y => y.Project) > .Cascade.None() > .FetchType.Join()) > > .SubClass<AccountActivity>("A", > x => x.HasOne(y => y.Account).Cascade.SaveUpdate > ().FetchType.Join()) > } > } > > > -- - Hudson http://www.bestguesstheory.com http://twitter.com/HudsonAkridge --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
