Working with Cascade.All ... tnks Ricardo

2013/10/10 Ricardo Peres <[email protected]>

> That's because on the cascade you don't have Cascade.All |
> Cascade.DeleteOrphans.
>
> RP
>
>
> On Thursday, October 10, 2013 2:59:53 PM UTC+1, Tiago Azevedo wrote:
>
>> With me the following error occurred while saving the parent
>>
>> object references an unsaved transient instance - save the transient
>>> instance before flushing or set cascade action for the property to
>>> something that would make it autosave. Type: Role, Entity: Role
>>
>>
>>
>> 2013/10/10 Ricardo Peres <[email protected]>
>>
>> Tiago:
>>>
>>> This class:
>>>
>>> public class Role
>>> {
>>>     public Role()
>>>     {
>>>             this.Roles = new List<Role>();
>>>     }
>>>     
>>> public virtual int Id { get; s**et; }
>>>     public virtual string Name { g**et; set
>>> ; }
>>>     public virtual bool Checked { **get; set; }
>>>     
>>> public virtual Role Parent { g**et; set
>>>
>>> ; }
>>>     
>>> public virtual IList<Role> **Roles { get; set; }
>>> }
>>>
>>>
>>> And this mapping:
>>>
>>>
>>> public class RoleMap : ClassMa**pping<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 | Cascad**e.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]>
>>>>
>>>>>  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/**to
>>>>> **pic/nhusers/qIJlAN0vuXM/**unsubs**cribe<https://groups.google.com/d/topic/nhusers/qIJlAN0vuXM/unsubscribe>
>>>>> .
>>>>> To unsubscribe from this group and all its topics, send an email to
>>>>> nhusers+u...@**googlegroups.com.
>>>>> To post to this group, send email to [email protected].
>>>>>
>>>>> Visit this group at 
>>>>> http://groups.google.com/**group**/nhusers<http://groups.google.com/group/nhusers>
>>>>> .
>>>>> For more options, visit 
>>>>> https://groups.google.com/**grou**ps/opt_out<https://groups.google.com/groups/opt_out>
>>>>> .
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Tiago Azevedo Borges
>>>> Goiânia - Goiás
>>>>
>>>  --
>>> 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<https://groups.google.com/d/topic/nhusers/qIJlAN0vuXM/unsubscribe>
>>> .
>>> To unsubscribe from this group and all its topics, send an email to
>>> nhusers+u...@**googlegroups.com.
>>> To post to this group, send email to [email protected].
>>> Visit this group at 
>>> http://groups.google.com/**group/nhusers<http://groups.google.com/group/nhusers>
>>> .
>>> For more options, visit 
>>> https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out>
>>> .
>>>
>>
>>
>>
>> --
>> Tiago Azevedo Borges
>> Goiânia - Goiás
>>
>  --
> 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].
> 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.
>



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