I had the same problem, I solved it by converting the list of enums to
an string when saving it... it is not ideal, but it works.

class User
{
    public IList<Permissions> Permissions { get;set; }
    internal string PermissionsString
    {
        get
        {
        StringBuilder permissionString = new Stringbuilder();
        foreach(var item in Permissions) permissionString.Append
(",").Append(item.ToString());
        return permissionString.Remove(0,1).ToString();
        }
        set
        {
            string[] values = value.Split(',');
            foreach(string item in values) Permisions.Add((Permission)
Enum.Pars(typeof(Permission), item, true));
        }
    }
}

On Jun 15, 10:24 pm, Loki <[email protected]> wrote:
> That's what I'm afraid of...that I can't use my enum and I have to go
> to a class.  Or, I'll end up having the class for the permisions and
> the enums just to make the id's easier to read/access in code.  Not
> ideal, but I'm tired of being held up by this problem.
>
> On Jun 15, 2:24 pm, Hudson Akridge <[email protected]> wrote:
>
> > If you're doing it that way, Permission really needs to be a class. It is
> > fairly static though, User/UserPermission are going to be your tables that
> > are going to change most often (the only tables changing once your
> > permissions are set up).
>
> > On Mon, Jun 15, 2009 at 11:10 AM, Ben Hyrman <[email protected]> wrote:
>
> > > If I understand
>
> > > You have class User
> > > You have table User
> > > You have table UserPermission
>
> > > Do you have table Permission?
>
> > > Is Permission a fairly static set?
>
> > > On Sun, Jun 14, 2009 at 5:16 PM, Loki<[email protected]>
> > > wrote:
>
> > > > I've been trying for some time with no luck on this issue, so I home
> > > > someone here has done what I am trying to do.
>
> > > > I have an enum - in my case it is particular permissions for tasks a
> > > > person can do - add content, delete content, edit users, delete users,
> > > > etc.  This is an Enum in my project called Permissions.  I want to use
> > > > an enum rather than a class object so I can do something like bool
> > > > UserHasPermission(Permission.DeleteUser);
>
> > > > Permissions can either be given to a role to allow me to custom build
> > > > roles as I need with varied sets of tasks that role can perform, or
> > > > given to an individual user.  More than one permission can be granted
> > > > to a role or user.
>
> > > > In my database, I have the user table and then a UserPermissions table
> > > > which maps the user's id to any number of permissions.  Now, I will
> > > > accept mapping the string value of the enum or the int value.  I just
> > > > want it to work.  I do not want to have to manage 2 sets of
> > > > permissions (one in code and one in the database), unless I have to.
> > > > If nhibernate could take my enum class and autopopulate a table with
> > > > my enum int value for the PK and the name, picking up on changes,
> > > > etc., that would be nice.
>
> > > > Right now, I have a mapping where x.Permissions is an IList of type
> > > > Permission (my enum).
>
> > > > HasManyToMany(x => x.Permissions)
> > > >                 .WithParentKeyColumn("UserId")
> > > >                 .WithChildKeyColumn("PermissionId")
> > > >                 .WithTableName("UserPermissions")
> > > >                 .LazyLoad();
>
> > > > This mapping errors saying that the type Permission is unmapped.
>
> > > > If anyone can point me in the right direction on mapping a list of
> > > > enums to an object, it would be much appreciated.
>
> > --
> > - Hudsonhttp://www.bestguesstheory.comhttp://twitter.com/HudsonAkridge-Hide 
> > quoted text -
>
> > - Show quoted text -
>
>
--~--~---------~--~----~------------~-------~--~----~
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