NHibernate尝试查询一个不存在的列

本文关键字:一个 不存在 查询 NHibernate | 更新日期: 2023-09-27 18:15:35

使用流利的NHibernate,我已经映射了一个实体与Id列(UsuarioConta),这个实体引用另一个实体(MoedaValor)作为一个组件,它没有Id列。但是当我尝试查询UsuarioConta时,它返回给我一个错误:Invalid column name 'Id'.

查看NHibernate查询,我可以看到NHibernate试图查询MoedaValor表中不存在的列,就好像我引用了Id列一样-我没有。

我的地图:

public class UsuarioContaMap
{
    public UsuarioContaMap()
    {
        Table("UsuarioConta");
        Id(x => x.Id).GeneratedBy.Identity()
        References<Usuario>(x => x.Usuario)
           .Column("IdUsuario")
           .ForeignKey("FK_UsuarioConta_Usuario").Nullable();
        HasMany<UsuarioContaMovimentacao>(x => x.Movimentacoes)
            .KeyColumn("IdUsuarioConta")
            .ForeignKeyConstraintName("FK_UsuarioContMov_UsuarioCont")
            .Cascade.AllDeleteOrphan();
        HasMany<MoedaValor>(x => x.Saldos)
            .Table("UsuarioSaldo")
            .KeyColumn("IdUsuarioConta")
            .ForeignKeyConstraintName("FK_UsuarioSaldo_UsuarioConta")
            .Cascade.AllDeleteOrphan()
            .Fetch.Join()
            .Component(x =>
                           {
                               x.References(y => (Moeda)y.Moeda)
                                  .Column("IdMoeda")
                                  .ForeignKey("FK_UsuarioSaldo_Moeda");
                               x.Map(y => y.Valor);
                           });
    }
}
返回错误的查询:

选择movimentac2_。Id为col_0_0_, moventac3_。Id为col_1_0_, saldos4_。Id为col__0_ , usuario_0_。IdPessoa是col__0_,通常是u_0_。[size = 0]; [size = 0];Id为Id275_0_, moventac3_。Id为Id275_1_, moventac2_。勇者如勇者,勇者如勇者。Tipo为tipo275_,运动2_。数据为Data275_0_, moventac2_。IdMoeda275_0_, moventac2_。【翻译】【翻译】:【翻译】勇者如勇者,勇者如勇者。Tipo为tipo275_,运动3_。数据为Data275_1_, moventac3_。IdMoeda275_1_, moventac3_。IdUsuarioConta as IdUsuari6_275_1_ from usuario0_ inner join from usuario0_ on usuario0_. idpessoa =usuario0_1_。Id, usuariocon1_左外连接usuariocon1_上usuariocon1_.Id=movimentac2_。usuariocon1_1 . id =movimentac3_。IdUsuarioConta左外加入UsuarioSaldo saldos4_ on usuariocon1_1 . id =saldos4_。usuario0_.Perfil<>@p1 and usuariocon1__idusuuoario =usuario0_.IdPessoa

我没有复杂的查询试图得到的结果,所以我认为问题是在地图。上面有错误吗?

NHibernate尝试查询一个不存在的列

您没有显式地为Id指定columnname。所以修改这个:

Id(x => x.Id).GeneratedBy.Identity()

:

Id(x => x.Id).GeneratedBy.Identity().Column("ColumnName")

其中"ColumnName"是主键列的名称

相关文章: