2017-04-07 5 views
1

Ich habe eine Klasse namens DadosvalmetSam (Parent), die eine Eins-zu-viele-Beziehung mit DadosfuncionarioSam (Child) haben.NHibernate: One-to-many

Klassen und Abbildung unten:

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

Wenn ich ein DadosvalmetSam Einfügen, NH alle Daten innerhalb der IList einfügt, das ist genau das, was Ich erwartete. Aber wenn ich einen DadosvalmetSam aktualisiere und bei diesem Update eine Zeile aus IList entfernt habe, habe ich nur den FK in der DadosfuncionarioSam auf null gesetzt und lösche den Datensatz nicht. Wie kann ich dieses Problem lösen?

Antwort

0

Haben Sie

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

Ja, aber diese Zuordnung geben Sie mir einen Fehler, wenn Sitzung aufzubauen. MappingException: Nicht unterstützter Kaskadenstil: delete-orphans –