实体框架6-查询DbContext时出错



我正在使用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"。"Where"无输入。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;
    }
}

我的代码出了什么问题?

提前谢谢。

Jeronimo

在上下文中执行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();
}

最新更新