2010-12-10 2 views
2

Nhibernate ConfORM 캐스케이드에 문제가 있습니다.ConforM Nhibernate OneToMany Cascade

public class User : BaseEntity 
{   
    public User(Role role) 
    {    
     this.Role = role;   
    } 

    protected User() 
    { 
    } 

    public virtual Role Role { get; protected set; } 
} 

및 역할 :

public class Role : BaseEntity 
{ 
    public Role() 
    { 
     this.Users = new HashedSet<User>(); 
    }  
    public virtual ISet<User> Users { get; protected set; } 
} 

캐스케이드 설정 :

var relationalMapper = new ObjectRelationalMapper(); 
     relationalMapper.TablePerConcreteClass(domainEntities); 
     relationalMapper.Patterns.PoidStrategies.Add(new NativePoidPattern()); 
     relationalMapper.Cascade<User, Role>(Cascade.Persist); 
     relationalMapper.Cascade<Role, User>(Cascade.Persist); 

이 자동 매핑이 제공 :

<class name="User" table="Users"> 
<id name="Id" type="Int32"> 
    <generator class="native" /> 
</id> 
<many-to-one name="Role" column="RoleId" cascade="save-update, persist" /> 

이 개 실체를 존재 나는 삭제 역할없이 사용자를 삭제할. 모든 대부분의 모든 테스트를 통과했다, 그러나 이것은 폭포 :

this.role = new Role(); 
     this.user = new User(this.role) { Login = "memoryUser", Password = "memoryPass" }.SetIdTo(0); 
     role.Users.Add(user); 
     this.session.SaveOrUpdate(this.user); 
     repo.Delete(this.user); 
     var u = repo.GetByName("memoryUser"); 

     u.Should().Be.Null(); 

오류 메시지 : 내가 삭제 된 사용자 얻으려고 할 때 나타납니다 (VAR U = repo.GetByName ("memoryUser을");).

삭제 된 개체 협회

나는이 문제를 해결하기 위해 어떻게해야

에서 캐스케이드 삭제 삭제 된 개체에 의해 다시 저장됩니다?

답변

2

DB로 변경, 트랜잭션 커밋?