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/da79c6d9f0e157ab/d829862ce55e82a0?lnk=gst&q=idx#d829862ce55e82a0

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

Reply via email to