Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => 1
            [id] => 480650
            [titulo] => Relacionamento entre Classes
            [dataCadastro] => DateTime Object
                (
                    [date] => 2014-05-29 13:42:15
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 232232
            [status] => A
            [isExample] => 
            [NomeUsuario] => Joel Rodrigues
            [Apelido] => 
            [Foto] => 232232_20161017163010.jpg
            [Conteudo] => Obrigado pelo retorno, amigo.
Estou encerrando o tópico. ) )

Relacionamento entre Classes

Elessandro Poças
   - 06 mai 2014

Tenho uma classe clienteFisica que se relaciona com a classe cliente sendo que a classe cliente se relaciona com a classe empresa.
Descrição Classe Empresa
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ObjetoTransferencia
{
public class Empresa
{
public int Acao { get; set; }
public int IDEmpresa { get; set; }
public string Razao { get; set; }
public string Fantazia { get; set; }
public string Cnpj { get; set; }
public string Ie { get; set; }
public string Endereco { get; set; }
public string Complemento { get; set; }
public string Bairro { get; set; }
public string Cep { get; set; }
public string Cidade { get; set; }
public string Estado { get; set; }
public bool Situacao { get; set; }
public string TelFixo { get; set; }
public string TelCelular { get; set; }
public string Email { get; set; }
public string HomePage { get; set; }
public string NomeResponsavel { get; set; }
public string CpfResponsavel { get; set; }
public string RgResponsavel { get; set; }
public string EmailResponsavel { get; set; }
}
}
Descrição Classes Cliente
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ObjetoTransferencia
{
public class Cliente
{
public int IDCliente { get; set; }
public ClienteTipo ClienteTipo { get; set; }
public Empresa Empresa { get; set; }
public DateTime DtCadastro { get; set; }
}
}
Descrição Classe clienteFisica
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ObjetoTransferencia
{
public class ClienteFisica
{
public int Acao { get; set; }
public int IDEmpresa { get; set; }
public Cliente Cliente { get; set; }
public string Nome { get; set; }
public string Cpf { get; set; }
public string Rg { get; set; }
public DateTime DtNascimento { get; set; }
public string Endereco { get; set; }
public string Complemento { get; set; }
public string Bairro { get; set; }
public string Cep { get; set; }
public string Cidade { get; set; }
public string Estado { get; set; }
public string Situacao { get; set; }
public Decimal LimiteCredito { get; set; }
public string NomePai { get; set; }
public string NomeMae { get; set; }
public string Email { get; set; }
public string TelFixo { get; set; }
public string TelCelular { get; set; }
public string Observacao { get; set; }
}
}
Descrição Classe clienteFisicaNegocio:
using System;
using System.Data;
using AcessoBancoDados;
using ObjetoTransferencia;
namespace ObjetoTransferencia
{
public class ClienteFisicaNegocio
{
AcessoDadosSqlServer acessoDadosSqlServer = new AcessoDadosSqlServer();
public string Inserir(ClienteFisica clienteFisica)
{
try
{
acessoDadosSqlServer.LimparParametros();
acessoDadosSqlServer.AdicionarParametros("@Acao", clienteFisica.Acao);
acessoDadosSqlServer.AdicionarParametros("@IDEmpresa", clienteFisica.Cliente.Empresa.IDEmpresa);
acessoDadosSqlServer.AdicionarParametros("@Nome", clienteFisica.Nome);
acessoDadosSqlServer.AdicionarParametros("@Cpf", clienteFisica.Cpf);
acessoDadosSqlServer.AdicionarParametros("@Rg", clienteFisica.Rg);
acessoDadosSqlServer.AdicionarParametros("@DtNascimento", clienteFisica.DtNascimento);
acessoDadosSqlServer.AdicionarParametros("@Endereco", clienteFisica.Endereco);
acessoDadosSqlServer.AdicionarParametros("@Complemento", clienteFisica.Complemento);
acessoDadosSqlServer.AdicionarParametros("@Bairro", clienteFisica.Bairro);
acessoDadosSqlServer.AdicionarParametros("@Cep", clienteFisica.Cep);
acessoDadosSqlServer.AdicionarParametros("@Cidade", clienteFisica.Cidade);
acessoDadosSqlServer.AdicionarParametros("@Estado", clienteFisica.Estado);
acessoDadosSqlServer.AdicionarParametros("@Situacao", clienteFisica.Situacao);
acessoDadosSqlServer.AdicionarParametros("@LimiteCredito", clienteFisica.LimiteCredito);
acessoDadosSqlServer.AdicionarParametros("@NomePai", clienteFisica.NomePai);
acessoDadosSqlServer.AdicionarParametros("@NomeMae", clienteFisica.NomeMae);
acessoDadosSqlServer.AdicionarParametros("@Email", clienteFisica.Email);
acessoDadosSqlServer.AdicionarParametros("@TelFixo", clienteFisica.TelFixo);
acessoDadosSqlServer.AdicionarParametros("@TelCelular", clienteFisica.TelCelular);
acessoDadosSqlServer.AdicionarParametros("@Observacao", clienteFisica.Observacao);
string idClienteFisica = acessoDadosSqlServer.ExecutarManipulacao(CommandType.StoredProcedure, "uspClienteFisicaManter").ToString();
return idClienteFisica;
}
catch (Exception ex)
{
return ex.Message;
}
}
}
}
Formulário de Clientes:
using System;
using System.Windows.Forms;
using ObjetoTransferencia;
using Negocios;
namespace Apresentacao
{
public partial class FrmClienteCadastro : Form
{
public FrmClienteCadastro()
{
InitializeComponent();
}
private void btnSalvar_Click(object sender, EventArgs e)
{

ClienteFisica clienteFisica = new ClienteFisica();
clienteFisica.Acao = 1;
clienteFisica.Cliente.Empresa.IDEmpresa = 1;
clienteFisica.Nome = txtRazao.Text;
clienteFisica.Cpf = txtCnpj.Text;
clienteFisica.Rg = txtIe.Text;
clienteFisica.DtNascimento = Convert.ToDateTime("04/06/1978");
clienteFisica.Endereco = txtEndereco.Text;
clienteFisica.Complemento = txtComplemento.Text;
clienteFisica.Bairro = txtBairro.Text;
clienteFisica.Cep = txtCep.Text;
clienteFisica.Cidade = txtCidade.Text;
clienteFisica.Estado = txtEstado.Text;
if (rbAtivo.Checked == true)
clienteFisica.Situacao = "1";
else
clienteFisica.Situacao = "0";
clienteFisica.LimiteCredito = Convert.ToDecimal(txtLimiteCredito.Text);
clienteFisica.NomePai = "JOAO ANTONIO POCAS";
clienteFisica.NomeMae = "LEONICE MARTINS POCAS";
clienteFisica.Email = txtEmail.Text;
clienteFisica.TelFixo = "4332321729";
clienteFisica.TelCelular = "4332321729";
clienteFisica.Observacao = txtObservacao.Text;
ClienteFisicaNegocio clienteFisicaNegocio = new ClienteFisicaNegocio();
string retorno = clienteFisicaNegocio.Inserir(clienteFisica);
try
{
int idCliente = Convert.ToInt32(retorno);
MessageBox.Show("Dados salvos com sucesso. \n Código: " + idCliente.ToString(), "Aviso do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.DialogResult = DialogResult.Yes;
}
catch
{
MessageBox.Show("Não foi possível salvar. \n Detalhes: " + retorno, "Aviso do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.DialogResult = DialogResult.No;
}
}
}
}
Nesta linha clienteFisica.Cliente.Empresa.IDEmpresa = 1; apresenta o seguinte erro (Object reference not set to an instance of an object.)
Estou usando ADO.NET em camadas sendo (AcessoDados, Negocio, Apresentacao e ObjetoTranferência)
E não sei qual é o problema.
Agradeço deste já se alguém puder me ajudar.

Post mais votado

Joel Rodrigues
   - 29 mai 2014

Obrigado pelo retorno, amigo.
Estou encerrando o tópico.

1
|
0

Joel Rodrigues
   - 07 mai 2014

Esse erro é gerado quando um objeto não foi instanciado e você está tentando acessá-lo. Você precisa instanciar o objeto Empresa dentro da classe Cliente, bem como instanciar a Cliente dentro da ClienteFisica, antes de utiliza-las.

0
|
0

Elessandro Poças
   - 07 mai 2014

Joel,

Obrigado pela ajuda, funcionou... pode fechar o tópico...

Na classe cliente ficou:

public Cliente()
{
Empresa = new Empresa();
ClienteTipo = new ClienteTipo();
}

Na classe clienteFisica ficou:

public clienteFisica()
{
Cliente = new Cliente()
}

0
|
0