2010-12-10 38 views
2

J'ai un problème avec la cascade Nhibernate ConfORM. Existent deux entités:ConfORM Nhibernate OneToMany Cascade

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

    protected User() 
    { 
    } 

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

et Rôle:

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

paramètres Cascade:

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

Ce AutoMapping donne:

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

Je veux supprimer l'utilisateur sans rôle de suppression. Tous les plus tous les tests se sont écoulés, mais celui-ci tombe:

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(); 

Message d'erreur: Il apparaît lorsque je tente d'obtenir les utilisateurs supprimés (var u = repo.GetByName ("memoryUser");).

objet supprimé serait à nouveau sauvé par remove cascade objet supprimé des associations

Que dois-je faire pour résoudre ce problème?

Répondre

2

Vider les modifications dans DB, valider la transaction?