Tiago:

This class:

public class Role
{
        public Role()
        {
                this.Roles = new List<Role>();
        }
        public virtual int Id { get; set; }
        public virtual string Name { get; set; }
        public virtual bool Checked { get; set; }
        public virtual Role Parent { get; set; }
        public virtual IList<Role> Roles { get; set; } 
}


And this mapping:


public class RoleMap : ClassMapping<Role>
{
        public RoleMap()
        {
                this.Table("ROLE");
 
                this.Id(x => x.Id,
                m => m.Generator(Generators.HighLow));
 
                this.Property(x => x.Name,
                m =>
                {
                        m.Column("name");
                        m.NotNullable(true);
                });
 
                this.Property(x => x.Checked,
                m =>
                {
                        m.Column("checked");
                        m.NotNullable(true);
                });
 
                this.ManyToOne(x => x.Parent, m =>
                {
                        m.Column("parent_id");
                        m.NotNullable(false);
                });
 
                this.Bag(x => x.Roles, m =>
                {
                        m.Key(k => k.Column("parent_id"));
                        m.Inverse(true);
                        m.Cascade(Cascade.All | Cascade.DeleteOrphans);
                        m.Lazy(CollectionLazy.NoLazy);
                },
                r => r.OneToMany());
        }
}



And these tests:


using (var session = sessionFactory.OpenSession())using 
(session.BeginTransaction())
{
        var parent = new Role { Checked = true, Name = "Parent" };
        var child = new Role { Parent = parent, Name = "Child" };
 
        parent.Roles.Add(child);
 

        session.Save(parent);

        session.Flush();
 
        var roles = session.Query<Role>().ToList();
 
        Debug.Assert(roles != null);
 
        Debug.Assert(roles.Count == 2);
 
        Debug.Assert(roles[0].Parent == null);
                                        
        Debug.Assert(roles[1].Parent == roles[0]);
 
        Debug.Assert(roles[0].Roles.Contains(roles[1]));
}


All work perfectly. What I had to do was set the generator to something 
(HiLo, in this case).

RP


On Wednesday, October 9, 2013 1:38:52 PM UTC+1, Tiago Azevedo wrote:
>
> The problem is ... I can not get the correct mapping for my class role.
>
> The problem is ... I can not get the correct mapping for my role class. 
> The mapping you suggested in your first reply does not bring what I want 
> correctly, the parent he brings himself and the list is empty.
>
>
> 2013/10/9 Ricardo Peres <[email protected] <javascript:>>
>
>> Tiago,
>>
>> You are not explaining what the problem is. Do you have an exception when 
>> building the session factory, or when querying, or doesn't the query bring 
>> what you expected? Can you see the generated SQL?
>>
>> RP
>>
>>
>> On Tuesday, October 8, 2013 6:16:35 PM UTC+1, Tiago Azevedo wrote:
>>>
>>> I'll try to explain my situation, sorry if the formulation of the 
>>> phrases get bad, I'm using a translator.
>>>
>>> I have a user that has a profile, this profile can be Administrator, 
>>> Manager, Employee, etc.. Each profile has a list of roles and each role 
>>> represents an access to a certain page. Each role has a list of other 
>>> roles. The roles forms a hierarchical tree structure(See image below).
>>>
>>>
>>> <https://lh4.googleusercontent.com/-QD-a5q-qixE/UlQ8wsC1K1I/AAAAAAAAAVc/IzBh1g9mD_I/s1600/TriStateTreeView.png>
>>> What I need is to set classes and mappings.
>>>
>>  -- 
>> You received this message because you are subscribed to a topic in the 
>> Google Groups "nhusers" group.
>> To unsubscribe from this topic, visit 
>> https://groups.google.com/d/topic/nhusers/qIJlAN0vuXM/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to 
>> [email protected] <javascript:>.
>> To post to this group, send email to [email protected]<javascript:>
>> .
>> Visit this group at http://groups.google.com/group/nhusers.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>
>
>
> -- 
> Tiago Azevedo Borges
> Goiânia - Goiás 
>

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/nhusers.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to