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
-~----------~----~----~----~------~----~------~--~---

Reply via email to