2010-12-10 72 views
2

我有一些Nhibernate ConfORM级联的问题。 存在两个实体:ConfORM Nhibernate OneToMany级联

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,Commit事务?