No problem. You should have a read of the Collection Mapping<http://www.nhforge.org/doc/nh/en/index.html#collections>chapter in the NHibernate docs, which goes into a bit more detail of the various differences in the available collections.
On Fri, Mar 27, 2009 at 7:17 PM, Jeremy Wadsack <[email protected]>wrote: > Thanks guys for clarifying what's going on. I'm new to NH so I don't always > know what happens in which engine. Appreciate the response. > > - Jeremy > > > On Fri, Mar 27, 2009 at 4:22 AM, James Gregory <[email protected]>wrote: > >> A list is an indexed, ordered, collection of entities. A bag is an >> unindexed, in ordered collection. I'm guessing that because your entity >> doesn't have a primary key, there was no way for NHibernate to index or >> order it. >> >> >> On Fri, Mar 27, 2009 at 11:03 AM, Paul Batum <[email protected]>wrote: >> >>> That would be a question best posed to the main NH list as it is really a >>> question about the behavior of NHibernate's different collection types. >>> >>> >>> On Fri, Mar 27, 2009 at 10:24 AM, Jeremy Wadsack < >>> [email protected]> wrote: >>> >>>> >>>> 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) >>>> > ) >>>> >>>> >>> >>> >>> >> >> >> > > > -- > Jeremy Wadsack > > > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
