2017-04-07 71 views
1

我有一個名爲DadosvalmetSam(Parent)的類,它與DadosfuncionarioSam(Child)具有一對多的關係。NHibernate:一對多

類和映射如下:

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,並且不刪除該記錄,我該如何解決此問題?

回答

0

你試過

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

是的,但是建立會話時,這個映射給我一個錯誤。 MappingException:不支持的級聯樣式:刪除孤兒 –