E aí, galerinha do GUJ!
Tudo bem?
Quero implementar um serviço para rodar aqui no meu serviço, mas me deparei com uma dúvida:
Eu, particularmente, ao “desenhar” o mapeamento do Fluent NHibernate, defino que todas as coleções sejam carregadas tardiamente (LazyLoad).
Daí me surgiu uma dúvida: se eu chamo um serviço que carrega uma lista de pessoas para mim, abrindo e fechando a sessão, as coleções, ao serem invocadas pelo usuário do serviço não serão carregadas, porque não tem uma sessão ativa. É certo isso que disse? Ou eu tô viajando mesmo?
Um exemplo prático (supondo que todas as classes já estejam mapeadas com as interfaces do WCF):
[code]//Entidade
public class Pessoa
{
public long ID { get; set; }
public string Nome { get; set; }
public IEnumerable Enderecos { get; set; }
// Classe Endereco omitida...
}
// Classe de mapeamento
public class PessoaMapping : ClassMap
{
public PessoaMapping()
{
Schema(“dbo”);
Table(“PESSOA”);
Id(m => m.ID, "ID")
.GeneratedBy
.Sequence("dbo.SEQ_PESSOA");
Map(m => m.Nome, "NOME")
.Insert()
.Update()
.Length(50)
.Not.Nullable();
HasMany(m => m.Enderecos)
.AsBag()
.Inverse()
.LazyLoad()
.KeyColumn("PESSOA");
}
}
//Classe de serviços
public class PessoaService
{
public IEnumerable GetPessoas()
{
IEnumerable pessoas;
using (ISession session = ConnectionFactory.CreateSession())
pessoas = session.CreateCriteria().List();
return pessoas;
}
}[/code]
Beleza, ao enviar essa coleção de Pessoas, a coleção de Endereços será enviada carregada? Ou não, já que foi mapeada como LazyLoad? Será que o meu chamador do serviço consegue acessar a coleção de Endereços?
Valeu, galerinha,
fiquem com Deus! 