none
Include no me permite usar mi llave foranea RRS feed

  • Pregunta

  • Hola, tengo estas dos tablas en SQL Server:

    Medico:                                    Especialidad:

    -nroDocumento                        -id

    -Nombre                                   -Descripcion

    -idEspecialidad

    Con una relacion entre idEspecialidad y id (Especialidad). Dentro de Visual Studio, usando C# y Entity Framework 6.0 (DB First), quiero usar el include para obtener todos los medicos y las especialidades que itene cada uno. Para eso trato de usar esta instruccion:

    var list = db.Medicos.Include(x => x.Especialidad).ToList();

    Pero me sale un error en " x => x.Especialidad ", que dice "No se puede convertir expreson lambda en el tipo 'string' porque no es un tipo delegado". La relacion me aparece en el edmx. Y las propiedades dentro de cada clase tambien, por ejemplo Especialidad tiene un ICollection<Medicos> y Medicos tiene Especialidad (generados automaticamente por EF).

    Alguien sabe por que pasa esto? Gracias.

    jueves, 26 de septiembre de 2019 14:51

Respuestas

  • Prueba a ver si te funciona asi:

    var list = db.Medicos.Include("Especialidad").ToList();

    • Marcado como respuesta Nacho Sa jueves, 26 de septiembre de 2019 19:35
    jueves, 26 de septiembre de 2019 15:29
    Moderador
  • Hola Nacho ! Mirá acá te dejo un método que podes usar en tu clase..

     public List<Medico> LeerListado()
            {
                try
                {
                    using (TuBasedeDtaos bd = new TuBasedeDatos())
                    {
                        return bd.Medico.Include("Especialidad").Where(x=> x.idEspecialidad == x.Especialidad.id).ToList(); 
                    }
                }
                catch (FormatException ex)
                {
                    throw ex;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
    
            }

    Estos son mis Using..

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Data.SqlClient;
    using System.Data;
    using System.Configuration;
    using Capa_Datos;
    using System.Data.Entity;
    using System.Data.Entity.Internal.ConfigFile;
    using System.Data.Entity.Internal;
    using System.Data.Entity.Validation;

    Saludos !


    cervera


    • Editado Nicolás Cervera jueves, 26 de septiembre de 2019 17:39
    • Marcado como respuesta Nacho Sa jueves, 26 de septiembre de 2019 19:35
    jueves, 26 de septiembre de 2019 17:38

Todas las respuestas

  • Prueba a ver si te funciona asi:

    var list = db.Medicos.Include("Especialidad").ToList();

    • Marcado como respuesta Nacho Sa jueves, 26 de septiembre de 2019 19:35
    jueves, 26 de septiembre de 2019 15:29
    Moderador
  • Hola

    te falta llamar la libreria de Linq

    using System.Linq;
    para poder usar Lambda

    jueves, 26 de septiembre de 2019 16:12
  • Hola Nacho ! Mirá acá te dejo un método que podes usar en tu clase..

     public List<Medico> LeerListado()
            {
                try
                {
                    using (TuBasedeDtaos bd = new TuBasedeDatos())
                    {
                        return bd.Medico.Include("Especialidad").Where(x=> x.idEspecialidad == x.Especialidad.id).ToList(); 
                    }
                }
                catch (FormatException ex)
                {
                    throw ex;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
    
            }

    Estos son mis Using..

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Data.SqlClient;
    using System.Data;
    using System.Configuration;
    using Capa_Datos;
    using System.Data.Entity;
    using System.Data.Entity.Internal.ConfigFile;
    using System.Data.Entity.Internal;
    using System.Data.Entity.Validation;

    Saludos !


    cervera


    • Editado Nicolás Cervera jueves, 26 de septiembre de 2019 17:39
    • Marcado como respuesta Nacho Sa jueves, 26 de septiembre de 2019 19:35
    jueves, 26 de septiembre de 2019 17:38