Понимание сеанса. Удалите свободное владение Nhibernate - PullRequest
1 голос
/ 30 октября 2011

Предположим, у нас есть следующие объекты:

public class plaserv
{
    public virtual int id { get; private set; }
    [Required]
    public virtual DateTime fecha { get; set; }
    public virtual IList<plaattach> adjuntos { get; set; }
    public plaserv()
    {
        adjuntos = new List<plaattach>();
    }
}

public class plaattach
{
    public virtual int id { get; set; }
    public virtual plaserv plaserv { get; set; }
    [Required, StringLength(500)]
    public virtual string destination_name { get; set; }
}

У нас также есть несколько репозиториев, таких как:

public class PlaServRepository
{
    private SessionHelper _sessionHelper;
    public PlaServRepository(SessionHelper sessionHelper)
    {
        _sessionHelper = sessionHelper;
    }
    public void Delete(plaserv entity)
    {
        using (ITransaction transaction = _sessionHelper.Session.BeginTransaction())
        {
            _sessionHelper.Session.Delete(entity);
            transaction.Commit();
        }
    }
    .....
}

и

public class PlaAttachRepository
{   
 ....
    public void Delete(plaattach entity)
    {
        using (ITransaction transaction = _sessionHelper.Session.BeginTransaction())
        {
            _sessionHelper.Session.Delete(entity);
            transaction.Commit();
        }
    }
}

Кроме того, модель была создана с использованием автоматического картирования, поскольку вы можете видеть связь между plaattach plaserv и «один ко многим». Теперь предположим, что я хочу удалить табличную строку, потому что при запуске _sessionHelper.Session.Delete (entity) из хранилища PlaattachRepository не только удаленная строка PlaattachRepository в таблице, но и плоская строка в строке plaserv?

Надеюсь, правильно объясню

1 Ответ

1 голос
/ 31 октября 2011

Я действительно глуп и, очевидно, очень новичок, мой класс действительно реализовал соглашение каскадного удаления.При внесении следующих изменений все работало корректно

    public void Apply(IManyToOneInstance instance)
    {
        instance.Cascade.None();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...