My surprise was mostly because I thought WithKeyProperty had a string override, which it doesn't. Damn inconsistency. I'll look at addressing this.
On Thu, Feb 12, 2009 at 2:44 PM, Jon Kruger <[email protected]> wrote: > > I had to add the ActivityTypeId property to make it work. I would > rather be able to do this: > > public class ActivityMappingOverride : > IAutoMappingOverride<Activity> > { > public void Override(AutoMap<Activity> mapping) > { > mapping.UseCompositeId() > .WithKeyProperty(x => x.Id) > .WithKeyProperty(x => x.ActivityType, > "ActivityType_id"); > mapping.PropertiesMapped.Add(typeof(Activity).GetProperty > ("Id")); > mapping.PropertiesMapped.Add(typeof(Activity).GetProperty > ("ActivityType")); > } > } > > ... and just remove the ActivityTypeId property altogether since I > shouldn't really need it. > > Jon > > On Feb 12, 4:06 am, James Gregory <[email protected]> wrote: > > Hey Jon, > > Do you actually have a property called ActivityTypeId on Activity? That's > a > > little odd, surely it should just be an ActivityType property. Maybe I'm > > misreading your code. > > > > You've definitely struck an unconsidered situation here, but I don't > think > > it'd be too difficult to fix (I'll end up just doing the same as what > you've > > done, just hidden inside the automapper). > > > > On Wed, Feb 11, 2009 at 5:32 PM, Jon Kruger <[email protected]> wrote: > > > > > OK, I solved my own problem apparently, but it's not that pretty. I > > > added an override class that looks like this: > > > > > public class ActivityMappingOverride : > > > IAutoMappingOverride<Activity> > > > { > > > public void Override(AutoMap<Activity> mapping) > > > { > > > mapping.UseCompositeId() > > > .WithKeyProperty(x => x.Id) > > > .WithKeyProperty(x => x.ActivityTypeId, > > > "ActivityType_id"); > > > mapping.PropertiesMapped.Add(typeof(Activity).GetProperty > > > ("Id")); > > > mapping.PropertiesMapped.Add(typeof(Activity).GetProperty > > > ("ActivityTypeId")); > > > } > > > } > > > > > A couple things that look fishy: > > > > > 1) I had to hardcode the column name of ActivityType_id, I wish I > > > could've said .WithKeyProperty(x => x.ActivityType) and have it figure > > > out that I want to use the id from ActivityType > > > 2) I had to tell the mapping class that I already mapped the two > > > properties or it would make an Id() mapping for Id and a Map() mapping > > > for ActivityType_id when the automapper ran. The many-to-one is still > > > created though (which is good). > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
