Conform Nhibernate OneToMany Каскад - PullRequest
2 голосов
/ 10 декабря 2010

У меня проблемы с каскадом Nhibernate ConfORM.Существуют две сущности:

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

удаленный объект будет повторно сохранен каскадом. Удалить удаленный объект из ассоциаций

Что я должен сделать, чтобы решить эту проблему?

1 Ответ

2 голосов
/ 10 декабря 2010

Сброс изменений в БД, фиксация транзакции?

...