none
Objeto não instancia RRS feed

  • Pergunta

  • Tenho uma tabela que recebe uma FK. Nas minhas classes, a FK, virou um objeto assim:
    abstract public class Tarefa : EntidadeBase
     {
      #region --- Propriedades Privadas (Tarefa) ---
      private Int64 _IdTarefa;
      private Domain.Entity.Rotina _Rotina;===>>> Aqui não tenho IdRotina, mas a propria Rotina trazendo tudo
                    private Domain.Entity.TipoTarefa _TipoTarefa;===>>> Idem
      private String _Descricao;
      private DateTime? _DataInclusao;
      private DateTime? _DataAlteracao;
      private Boolean? _Ativo;
      private Int64 _OrdemExecucao;
      #endregion

      #region --- Propriedades Públicas (Tarefa) ---
      public Int64 IdTarefa
      {
       get { return _IdTarefa; }
       set { _IdTarefa = value; }
      }

            public Rotina Rotina
            {
                get { return _Rotina; }
                set { _Rotina = value; }
            }
    Acontece que quando eu chamo um método retornarTodos em Tarefa, o passo todos esses campos para o construtor. Só que na Rotina, diz que um objeto ainda não foi instanciado. Como eu faço isso?

    quinta-feira, 30 de agosto de 2012 13:22

Todas as Respostas

  • qual objeto não foi instanciado?

    como é este método retornarTodos?

    como fazer o que? hehehe

    quinta-feira, 30 de agosto de 2012 13:47
  • Desculpa, mas é que foi preciso fazer o post, para ir tirando a dúvida do post.

    Meu Inicializar

    public static void Inicializar(Domain.Entity.AgendamentoRotina _AgendamentoRotina, SqlDataReader _SqlDataReader)
      {
         _AgendamentoRotina.IdAgendamentoRotina = Convert.ToInt64(_SqlDataReader["IdAgendamentoRotina"]);
         _AgendamentoRotina.Rotina.IdRotina = Convert.ToInt64(_SqlDataReader["IdRotina"]);
         _AgendamentoRotina.Cliente.IdCliente = Convert.ToInt64(_SqlDataReader["IdCliente"]);
         _AgendamentoRotina.Projeto.IdProjeto = Convert.ToInt64(_SqlDataReader["IdProjeto"]);
         _AgendamentoRotina.FrequenciaExecucao.IdFrequenciaExecucao = Convert.ToInt64(_SqlDataReader["IdFrequenciaExecucao"]);
         _AgendamentoRotina.Descricao = Convert.ToString(_SqlDataReader["Descricao"]);
         _AgendamentoRotina.Habilitado = _SqlDataReader["Habilitado"].ToString().ToNullable<Boolean>();
         _AgendamentoRotina.DataInclusao = _SqlDataReader["DataInclusao"].ToString().ToNullable<DateTime>();
         _AgendamentoRotina.DataAlteracao = _SqlDataReader["DataAlteracao"].ToString().ToNullable<DateTime>();
         _AgendamentoRotina.RepetirVezesDia = _SqlDataReader["RepetirVezesDia"].ToString().ToNullable<Int32>();
         _AgendamentoRotina.Ativo = _SqlDataReader["Ativo"].ToString().ToNullable<Boolean>();
         _AgendamentoRotina.DataExecucaoInicial = Convert.ToDateTime(_SqlDataReader["DataExecucaoInicial"]);
         _AgendamentoRotina.DataExecucaoFinal = _SqlDataReader["DataExecucaoFinal"].ToString().ToNullable<DateTime>();
      }

    Minha chamada ao inicializar

    while (_SqlDataReader.Read())
        {
         Domain.Entity.AgendamentoRotina _AgendamentoRotina = new Domain.Entity.AgendamentoRotina();

         Inicializar(_AgendamentoRotina,_SqlDataReader);

         _ListaAgendamentoRotina.Add(_AgendamentoRotina);
        }

    O erro dá nessa linha

    _AgendamentoRotina.Rotina.IdRotina = Convert.ToInt64(_SqlDataReader["IdRotina"]);

    Rotina é passado como objeto na classe agendamento e não somente o Idrotina assim:

    private Domain.Entity.Rotina _Rotina;

    public Rotina Rotina
      {
                get { return _Rotina; }
                set { _Rotina = value; }
      }

    quinta-feira, 30 de agosto de 2012 13:58
  • pelo que eu entendi o problema não está na classe AgendamentoRotina mas sim no _SqlDataReader onde o campo"IdRotina" ou não existe ou tá retornando nullo... como ele cai na conversão pra int64 lança a exception.
    quinta-feira, 30 de agosto de 2012 14:06