NHibernate多对一级联删除(如何?)

时间:2010-09-19 17:22:59

标签: nhibernate fluent-nhibernate

我有这种情况:

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 个答案:

答案 0 :(得分:1)

您应该向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();
    }
}

答案 1 :(得分:0)