Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 一对多_C#_Nhibernate_Fluent Nhibernate_Mapping_One To Many - Fatal编程技术网

C# 一对多

C# 一对多,c#,nhibernate,fluent-nhibernate,mapping,one-to-many,C#,Nhibernate,Fluent Nhibernate,Mapping,One To Many,我有一个名为DadosvalmetSam(Parent)的类,它与DadosfuncionarioSam(Child)有一对多的关系 类别和映射如下: 达多斯瓦梅萨姆 public class DadosvalmetSam { public DadosvalmetSam() { dadosFuncionarios = new List<DadosfuncionarioSam>(); } public virtual int codi

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

类别和映射如下:

达多斯瓦梅萨姆

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();
    }
}
公共类DadosvalmetSam
{
公共数据包
{
DadosFunctionarios=新列表();
}
公共虚拟int codigoDvm{get;set;}
公共虚拟元名称sam codmenDvm{get;set;}
公共虚拟ValidadeSam codvalDvm{get;set;}
公共虚拟IList DadosFunctionarios{get;set;}
}
公共类DadosvalmetSamMap:ClassMap
{
public DadosvalmetSamMap()
{
表(“dadosvalmet_sam”);
Id(x=>x.codigoDvm).Column(“codigo_-dvm”).GeneratedBy.Identity().Not.Nullable();
引用(x=>x.codmenDvm).Column(“codmen_dvm”).Not.Nullable().Not.LazyLoad();
引用(x=>x.codvalDvm).Column(“codval_dvm”).Not.Nullable().Not.LazyLoad();
HasMany(x=>x.dadosFunctionarios).KeyColumn(“coddvm_dfu”).Cascade.All().Not.LazyLoad();
}
}
达多塞姆

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();
    }
}
公共类DadosFunctionarIOSAM
{
公共数据函数IOSAM()
{
}
公共虚拟数据sam coddvmDfu{get;set;}
公共虚拟函数codfunDfu{get;set;}
公共虚拟int codigoDfu{get;set;}
公共虚拟浮点?valorDfu{get;set;}
}
公共类DadosFunctionariosammap:ClassMap
{
公共数据函数iosammap()
{
表(“DadosFunctionario_sam”);
Id(x=>x.codigoDfu).Column(“codigo_-dfu”).GeneratedBy.Identity().Not.Nullable();
引用(x=>x.codfunDfu).Column(“codfun_dfu”).Not.Nullable().Not.LazyLoad();
Map(x=>x.valorDfu).Column(“valor_dfu”).Not.Nullable();
引用(x=>x.coddvmDfu).Column(“coddvm_dfu”).Nullable();
}
}
当我插入一个DadosvalmetSam时,NH会在IList中插入所有数据,这正是我所期望的。但是,当我更新一个DadosvalmetSam时,在这次更新中,我从IList中删除了一行,NH只是将DadosFunctionariosam中的FK设置为null,并且它没有删除记录,我如何解决这个问题?

您尝试过吗

HasMany(x => x.dadosFuncionarios).KeyColumn("coddvm_dfu").Cascade.DeleteOrphans().Not.LazyLoad();
你试过了吗

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

是的,但是这个映射在构建会话时给了我一个错误。MappingException:不支持的级联样式:删除孤立项,但此映射在生成会话时出错。MappingException:不支持的级联样式:删除孤立项