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
我没有复杂的查询试图得到的结果,所以我认为问题是在地图。上面有错误吗?
您没有显式地为Id指定columnname。所以修改这个:
Id(x => x.Id).GeneratedBy.Identity()
:
Id(x => x.Id).GeneratedBy.Identity().Column("ColumnName")
其中"ColumnName"是主键列的名称