Stack Overflow em Português Asked by Marllon Nasser on November 20, 2021
Senhores, meu problema aparentemente é simples, eu devo estar fazendo ou esquecendo alguma coisa e simplesmente não consigo enxergar o erro. Podem me ajudar?
Tenho a classe Cliente
:
public class Cliente {
public Cliente () { }
public virtual int ClienteId { get; set; }
public IList<Medidor> ListaMedidores { get; set; }
public virtual string NumeroMedidor { get; set; }
}
E a classe Medidor
public class Medidor
{
public Medidor() { }
public virtual string NumeroMedidor { get; set; }
public virtual string MarcaMedidor { get; set; }
public virtual Cliente Cliente { get; set; }
}
Tentei mapear da seguinte forma:
public ClienteMap()
{
Map(x => x.NumeroMedidor).Column("CORE_NUMERO_MEDIDOR");
HasMany(x => x.ListaMedidores).KeyColumn("NUMERO_MEDIDOR").Inverse().Cascade.All();
}
public MedidorMap()
{
Table("medidor");
LazyLoad();
Id(x => x.NumeroMedidor).Column("NUMERO_MEDIDOR");
Map(x => x.TipoMedidor).Column("TIPO_MEDIDOR");
References(x => x.Cliente).Column("CORE_NUMERO_MEDIDOR");
}
Meu objetivo é trazer o objeto Cliente com a lista de Medidores preenchida.
Eu faço simplesmente um:
Session.Query<Cliente>().Fetch(x => x.ListaMedidores).ToList();
E a lista de medidores vem vazia, mesmo tendo registros no banco.
Ficarei grato por qualquer tipo de ajuda/sugestão.
Consegui resolver...fica ai a solução caso alguém passe pelo mesmo problema.
Eu quis fazer uma relação entre tabelas sem que elas fossem indexadas por suas PKs e FKs..
Segue:
public class Cliente
{
public Cliente () { }
public virtual int ClienteId { get; set; }
public IList<Medidor> ListaMedidores { get; set; }
public virtual string NumeroMedidor { get; set; }
}
public class Medidor
{
public Medidor() { }
public virtual string NumeroMedidor { get; set; }
public virtual string MarcaMedidor { get; set; }
}
public class ClienteMap : ClassMap<Cliente>
{
public ClienteMap()
{
Map(x => x.NumeroMedidor).Column("NUMERO_MEDIDOR");
HasMany(x => x.ListaMedidores)
.KeyColumns.Add("NUMERO_MEDIDOR")
.Table("MEDID")
.PropertyRef("CoreNumeroCliente")
.Cascade.All();
}
}
public class MedidorMap : ClassMap<Medidor>
{
public MedidorMap()
{
LazyLoad();
Id(x => x.NumeroMedidor).Column("NUMERO_MEDIDOR");
Map(x => x.MarcaMedidor).Column("MARCA_MEDIDOR");
[...] //outras propriedades
}
}
Session.Query<CorteReligacao>()
.Fetch(x => x.ListaMedid)
Dessa forma, eu tenho o mesmo resultado esperado que o esperado no banco:
NUMERO_MEDIDOR MARCA_MEDIDOR
3569371 general_motors
3569371 kia
3569371 FIAT
Um obrigado em especial para o @Radim Köhler, que me ajudou bastante. Boa sorte a todos!
Answered by Marllon Nasser on November 20, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP