Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Listar dados com Objetos de valor

Minha classe usuário tem como propriedade telefone um objeto telefone composto por ddd e numero, conforme o codigo abaixo:

using System;
using System.Text.RegularExpressions;

namespace ERP.ObjetosValor
{
    public class Telefone
    {
        public string Ddd { get; set; }
        public string Numero { get; set; }

        private Telefone(string ddd, string numero)
        {
            Ddd = ddd;
            Numero = numero;
        }

        public static Telefone Criar(string ddd, string numero)
        {

            return new Telefone(ddd, numero);
        }


    }
}

Porem quando vou listar os usuários conforme o código abaxo

 public IList<Usuario> Listar()
        {
            return contexto.Usuarios.ToList();
        }

ele retorna uma exceção com a seguinte mensagem

A parameterless constructor was not found on entity type 
'Usuario.Telefone#Telefone' in order to create an instance of 
'Usuario.Telefone#Telefone' Ef requires parameterless constructor be declared.

como eu declaro o construtor desse objeto de valor na consulta EF?

3 respostas
solução!

Olá Giulia,

o Entity Framework necessita de um construtor sem parâmetros para conseguir modelar o seu contexto corretamente. Portanto, você precisa criá-lo na classe Telefone:

public Telefone()
{
}

Utilizando o construtor conforme mencionado, esta sendo exibido na listagem o namespace "ERP.ObjetosValor.NomeCompleto" ao inves do valor.

com a ajuda do Alessandro solucionei sobrescrevendo o método ToString() conforme mostro abaixo public override string ToString() { return Nome + Sobrenome; }

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software