none
Consulta dicas com implementar RRS feed

  • Pergunta

  • Pessoal talvez seja uma pergunta besta, mais estou precisando saber um caminho por favor

     

    Por exemplo Tenho 3 tabelas

     

    Empresa, Cliente, Usuario

     

    uma empresa tem uma lista de clientes, os clientes tem uma lista de usuarios;

     

    public class Empresa

    {

    IList<Clientes> cliente;

    }

     

    public class Cliente

    {

    IList<Usuarios> usuarios;

    public Empresa empresa;

    }

     

    public class Usuarios

    {

    public Cliente cliente;

    }

    ate ai tudo bem, quando vou adicionar um cliente ou usuario carrego a empresa e depois os clientes e usuarios .

    O problema e quando retornar um Usuario,    sabendo que um usuario pertence a um cliente e tambem a uma empresa, ou seja, na tabela usuario quando eu cadastro um novo usuario tem um campo la tipoUsuario que me diz se ele e de um cliente ou de uma empresa.

    Entao na hora de trazer eu faco 

    Usuario u = servicoUsuario.Carregar(4);

    if(u.TipoUsuario == "Cliente")

    return u.Cliente.RazaoSocial;

    else

    return u.Cliente.Empresa.RazaoSocial

    ai da erro, e claro, enquanto o usuario pertence ao cliente ele me retorna , mais se o usuario pertence a empresa e eu preciso do nome da empresa tenho que passa pelo cliente e vai dar erro dizendo que nao achou, ou uma exception. 

    Alguem sabe como faco pra retornar um objeto sendo que ele pode pertencer a 2 tabelas ?? lembrando que uso NHIBERNATE;

     

     

    segunda-feira, 28 de junho de 2010 18:23

Todas as Respostas

  • Provavelmente seu lazy loading está setado como false.

    É necessário você carregar as informações da empresa antes de puxar alguma propriedade dela.

    Não sei como funciona no NHibernate, mas no Entity Framework eu faço o seguinte:

    Usuario u = servicoUsuario.Carregar(4);
    
    if(u.TipoUsuario == "Cliente")
    {
      return u.Cliente.RazaoSocial;
    }
    else
    {
      u.Cliente.EmpresaReference.Load();
      return u.Cliente.Empresa.RazaoSocial;
    }
    

    Faço isso acima quando o lazy loading está desativado.


    Contato:albertim_brasil@hotmail.com - Se ajudei, marca como útil.
    Twitter: Me siga!!
    Blog:http://dotnettime.spaces.live.com/

    terça-feira, 29 de junho de 2010 10:09
  • Olá Lourival Dutra, qual mensagem de exception é retornada?

    outra dúvida. O usuário pertence a um Cliente e/ou Empresa? ou um ou outro?

    Como ficou o mapeamento? das relações?

    quarta-feira, 30 de junho de 2010 12:38