Многоуровневое каскадное удаление NHibernate (как?) - PullRequest
2 голосов
/ 19 сентября 2010

У меня есть такой сценарий:

public class Survey : EntityBase
{
    public virtual string Name { get; set; }
}

public class Response : EntityBase
{
    public virtual string Name { get; set; }
    public virtual Survey Survey { get; set; }
}

public class SurveyMap : ClassMap<Survey>
{
    public SurveyMap()
    {
        this.Id(e => e.Id);
        this.Map(e => e.Name);
    }
}

public class ResponseMap : ClassMap<Response>
{
    public ResponseMap()
    {
        this.Id(e => e.Id);
        this.Map(e => e.Name);
        this.References(e => e.Survey);         
    }
}

Я хочу, чтобы при удалении опросов автоматически удалялись ответы, как это настроить с помощью Fluent NHibernate.

Спасибо!

Ответы [ 2 ]

1 голос
/ 20 сентября 2010

Вы должны добавить свойство к вашей сущности Survey:

public class Survey : EntityBase 
{
    public virtual string Name { get; set; } 
    public IList<Response> Responses { get; set; }
}

и отобразить его, используя каскад:

public class SurveyMap : ClassMap<Survey>
{
    public SurveyMap()
    {
        this.Id(e => e.Id);
        this.Map(e => e.Name);
        this.HasMany( e => e.Responses ).Inverse().Cascade().All();
    }
}
0 голосов
/ 20 сентября 2010

Попробуйте установить ссылку для использования опции delete-orphan.

NHibernate Cascades: различие между всеми, all-delete-сиротами и save-update

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...