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] <javascript:>>
>
>> 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]>
>>>
>>>>  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<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] <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