Pregunta

He creado un nuevo Código de entidad Marcos primera aplicación y la DbSet (personas) está devolviendo un valor nulo.

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public class Repository : DbContext
{
    public DbSet<Person> People;
}

web.config : cadena de conexión

<connectionStrings>
  <add name="Repository"
       connectionString="Data Source=|DataDirectory|Repository.sdf"
       providerName="System.Data.SqlServerCe.4.0"/>
</connectionStrings>

Ahora cuando llamo

Repository _repo = new Repository()
_repo.People;

_repo.People será nulo

¿Qué me falta?

  • Microsoft.Data.Entity.Ctp.dll es referenciada
  • He tratado con y sin inicializador base de datos.
¿Fue útil?

Solución

Esto se debe a que definen un campo de la clase DbSet<Person> repositorio en lugar de un propiedad . Una vez que se agrega una propiedad o la cambia a ser una propiedad automática, People comenzará a dar valores en lugar de null. Así que todo lo que necesita hacer es cambiar su clase repositorio a:

public class Repository : DbContext
{
    public DbSet<Person> People { get; set; }
}

Otros consejos

Sólo tenía el mismo problema. El problema fue que me puse estas propiedades como 'interno', mientras que debe haber sido 'público'. Por si alguien todavía está buscando:)

  

Sólo tenía el mismo problema. El problema fue que me puse estas propiedades como 'interno', mientras que debe haber sido 'público'. Por si alguien todavía está buscando:)

supongo, estas propiedades puede ser interna / pública también, si se utilizan de esta manera:

public class Repository : DbContext
{
    internal DbSet<Person> People { get; set; }

    public Repository()
    {
        //your code here...
        People = Set<Person>();
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top