我正在使用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();
}