【问题标题】:NHibernate: One-to-manyNHibernate:一对多
【发布时间】:2017-09-03 07:43:14
【问题描述】:

我有一个名为 DadosvalmetSam (Parent) 的类,它与 DadosfuncionarioSam(Child) 具有一对多的关系。

下面的类和映射:

DadosvalmetSam

public class DadosvalmetSam
{

    public DadosvalmetSam()
    {
        dadosFuncionarios = new List<DadosfuncionarioSam>();
    }

    public virtual int codigoDvm { get; set; }      

    public virtual MetanomeSam codmenDvm { get; set; }      

    public virtual ValidadeSam codvalDvm { get; set; }  

    public virtual IList<DadosfuncionarioSam> dadosFuncionarios { get; set; }

}


public class DadosvalmetSamMap : ClassMap<DadosvalmetSam>
{

    public DadosvalmetSamMap()
    {
        Table("dadosvalmet_sam");
        Id(x => x.codigoDvm).Column("codigo_dvm").GeneratedBy.Identity().Not.Nullable();
        References(x => x.codmenDvm).Column("codmen_dvm").Not.Nullable().Not.LazyLoad();
        References(x => x.codvalDvm).Column("codval_dvm").Not.Nullable().Not.LazyLoad();
        HasMany(x => x.dadosFuncionarios).KeyColumn("coddvm_dfu").Cascade.All().Not.LazyLoad();
    }
}

DadosfuncionarioSam

public class DadosfuncionarioSam
{

    public DadosfuncionarioSam()
    {
    }

    public virtual DadosvalmetSam coddvmDfu { get; set; }       

    public virtual Funcionario codfunDfu { get; set; }      

    public virtual int codigoDfu { get; set; }      

    public virtual float? valorDfu { get; set; }    

}


public class DadosfuncionarioSamMap : ClassMap<DadosfuncionarioSam>
{

    public DadosfuncionarioSamMap()
    {
        Table("dadosfuncionario_sam");
        Id(x => x.codigoDfu).Column("codigo_dfu").GeneratedBy.Identity().Not.Nullable();
        References(x => x.codfunDfu).Column("codfun_dfu").Not.Nullable().Not.LazyLoad();
        Map(x => x.valorDfu).Column("valor_dfu").Not.Nullable();
        References(x => x.coddvmDfu).Column("coddvm_dfu").Nullable();
    }
}

当我插入一个 DadosvalmetSam 时,NH 将所有数据插入到 IList 中,这正是我所期望的。但是当我更新一个 DadosvalmetSam 并且在这次更新中我从 IList 中删除了一行时,NH 只是将 DadosfuncionarioSam 中的 FK 设置为 null 并且它没有删除记录,我该如何解决这个问题?

【问题讨论】:

    标签: c# nhibernate fluent-nhibernate mapping one-to-many


    【解决方案1】:

    你试过了吗

    HasMany(x => x.dadosFuncionarios).KeyColumn("coddvm_dfu").Cascade.DeleteOrphans().Not.LazyLoad();
    

    【讨论】:

    • 是的,但是这个映射在构建会话时给我一个错误。 MappingException:不支持的级联样式:删除孤儿
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多