So I've found (along the lines of the previous post) that changing to AsBag instead of AsList fixes this error (and introduces others that I'll dig into). I don't really understand why.
Can anyone shed light on that? - Jeremy On Mar 26, 3:33 pm, Jeremy Wadsack <[email protected]> wrote: > I have a class of users with permissions that are set from an enum. > The database doesn't have a primary key in the permissions table, so I > built a composite key. This all seems to work until I try to load/ > write to the permissions table. Fluent NHibernate (or maybe just > NHibernate) wants to insert a rogue column IDX. > > See similar > post:http://groups.google.com/group/fluent-nhibernate/browse_thread/thread... > > I've pulled the latest source and still am having no luck. I've tried > lots of suggestions from the couple instances I found like this > (change AsList to AsSet, settings column names, ...). All the jiggery > in the AdminMap class is just trying to get this working. No luck. > > Any idea why this is happening or how to fix it? > > TIA, > > Jeremy Wadsack > > --------------------------------------------------- > Source: > --------------------------------------------------- > public class Admin > { > public virtual int Id { get; private set; } > public virtual string Name { get; set; } > public virtual string Password { get; set; } > public virtual string Email { get; set; } > public virtual IList<AdminAccess> AdminAccesses { get; private > set; } > > public Admin() { > AdminAccesses = new List<AdminAccess>(); > } > } > > public class AdminAccess > { > public virtual Admin Admin { get; set; } > public virtual Function Function { get; set; } > public virtual int GroupId { get; set; } > // -- removed Equals implementations neede bu NHibernate for > composite keys > } > > public class AdminMap : ClassMap<Admin> > { > public AdminMap() { > WithTable("t_admin"); > > Id(x => x.Id, "admin_id"); > > Map(x => x.Name, "name"); > Map(x => x.Email, "email"); > Map(x => x.Password, "password"); > > HasMany( x => x.AdminAccesses ) > .AsList() > .KeyColumnNames.Clear() > .KeyColumnNames.Add( "admin_id" ) > .Cascade.All() > .Not.LazyLoad(); > } > } > > public class AdminAccessMap : ClassMap<AdminAccess> > { > public AdminAccessMap() { > WithTable("t_admin_access"); > > UseCompositeId() > .WithKeyProperty( x => x.Function, "function_id" ) > .WithKeyProperty( x => x.GroupId, "group_id" ) > .WithKeyReference( x => x.Admin, "admin_id" ); > > References( x => x.Admin, "admin_id" ); > > Map(x => x.GroupId, "group_id"); > Map(x => x.Function, "function_id"); > > } > } > > ------------------------------------------------------ > And here's the DDL that it spits out: > ------------------------------------------------------ > > create table t_admin ( > admin_id INT IDENTITY NOT NULL, > email NVARCHAR(255) null, > password NVARCHAR(255) null, > name NVARCHAR(255) null, > primary key (admin_id) > ) > create table t_admin_access ( > function_id INT not null, > group_id INT not null, > admin_id INT not null, > idx INT null, > primary key (function_id, group_id, admin_id) > ) --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
