查询DbContext时出错

时间:2015-06-23 16:05:09

标签: entity-framework-6

我正在使用EF CodeFirst。我的课程是:

public class Persona
{
    public int Id { get; set; }

    public string Nombre { get; set; }
    public string ApellidoUno { get; set; }
    public string ApellidoDos { get; set; }
    public virtual ICollection<Telefono> Telefonos { get; set; }
}

public class Telefono
{
    public virtual int Id { get; set; }
    public virtual string Numero { get; set; }

    public virtual int IdPersona { get; set; }
    public virtual Persona Persona { get; set; }
}

public class ContactoContexto : DbContext
{
    public ContactoContexto()
        : base("EF_Model") 
    {  }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        modelBuilder.Entity<Persona>().ToTable("Personas");

        // ... more Fluent API code..... 

        modelBuilder.Entity<Persona>()  
            .HasMany(x => x.Telefonos)
            .WithRequired(x => x.Persona)
            .HasForeignKey(x => x.IdPersona);
    }

    public DbSet<Persona> Personas { get; set; }
    public DbSet<Telefono> Telefonos { get; set; }
}

当我尝试选择一些数据时,我收到以下错误:

  

错误1无法使用实用程序设计程序'EF_Model.ContactoContexto'。 '哪里'没有encontrado。 c:\ users \ jmolina \ documents \ visual studio 2013 \ Projects \ prueba EF general \ 3。 ModeloNEgocio \ ModeloNegocio.cs 27 39 3. ModeloNegocio

我选择的代码是:

public class Intento
{
    public static IEnumerable<Persona> buscarcontactos(string nombre)
    {
        ContactoContexto conCon = new ContactoContexto();

        var personas = (from p in conCon where p.nombre == nombre select p);            
        return personas;
    }
}

我的代码有什么问题?

提前致谢。

尼莫

1 个答案:

答案 0 :(得分:0)

当您在上下文中执行Linq查询时,您需要从DbSet开始。您还应该在using语句中实例化DbContext,以确保在完成后正确处理它。

using (var conCon = new ContactoContexto())
{
    var personas = (from p in conCon.Personas where p.Nombre == nombre select p);

    // you need to use ToList() to actually materialize the result from the database
    return personas.ToList();
}