简体   繁体   English

NHibernate:一对多

[英]NHibernate: One-to-many

I have a class called DadosvalmetSam (Parent) which have a one-to-many relationship with DadosfuncionarioSam(Child). 我有一个名为DadosvalmetSam(Parent)的类,它与DadosfuncionarioSam(Child)有一对多的关系。

Classes and mapping below: 下面的类和映射:

DadosvalmetSam 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 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();
    }
}

When I'm inserting a DadosvalmetSam, NH inserts all the data inside the IList, that is exactly what I expected. 当我插入DadosvalmetSam时,NH会在IList中插入所有数据,这正是我所期望的。 But when I'm Updating a DadosvalmetSam and on this update I removed a row from IList, NH just set the FK in the DadosfuncionarioSam to null and it is not deleting the record, How could I solve this problem? 但是当我正在更新DadosvalmetSam并且在此更新时我从IList中删除了一行,NH只是将DadosfuncionarioSam中的FK设置为​​null并且它没有删除记录,我怎么能解决这个问题?

你有没有尝试过

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM