¿Por qué mi DbContext DbSet null?

He creado una nueva Entidad Marcos Primer Código de la aplicación y el DbSet (la Gente) se devuelve null.

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 me llaman

Repository _repo = new Repository()
_repo.People;

_repo.People será nulo

Lo que me estoy perdiendo?

  • Microsoft.Data.Entity.Ctp.dll es
    hace referencia
  • He probado con y
    sin una base de datos de inicializador.

3 Kommentare

  1. 67

    Eso es porque usted definir un campo de DbSet<Person> en el Repositorio de clase en lugar de un propiedad. Una vez que se agrega una propiedad o cambiarlo para que sea automático de la propiedad,People comenzará a dar los valores en lugar de null. Así que todo lo que usted necesita hacer es cambiar el Repositorio de la clase a:

    public class Repository : DbContext
    {
        public DbSet<Person> People { get; set; }
    }
    • WOW! Me siento estúpido! No puedo creer que no vea que después de mirar fijamente por horas. Gracias!
    • Eres bienvenido y no se preocupe ya que las propiedades automáticas se ven realmente como los campos, por eso yo siempre uso el VS de acceso directo prop para crear ellos 🙂
    • Acabo de hacer el mismo error. Se quedó mirando el*n da cosa de dos horas de ayer y, a continuación, hacer clic… La peor parte es que usted consigue un error de parámetro:fuente null, que es un arenque rojo.
    • Me siento como una maldita idiota ahora. Gracias, salvavidas!
    • Yo también siento como un tonto, pero todo está bien en el mundo de nuevo!
    • También puede venir hasta null si intenta utilizar { get; private set; }. EF no le gusta eso.
    • Este es un muy fácil de hacer por accidente y, a continuación, pasar por alto durante horas. Acabo de hacer yo mismo. Muy contenta de que mi primer Google éxito fue este Q&A!
    • Ni el setter ser protegidos. Debe ser público: { get; set; }
    • Si el origen de datos es una vista SQL, puede omitir el setter?

  2. 44

    Yo sólo tenía el mismo problema. El problema fue que hice en el conjunto de estas propiedades como «internos», mientras que ellos deben haber sido ‘público’. En caso de que alguien está todavía buscando 🙂

    • alguien sabe por qué puede configurarlas para que se interna en todos?
  3. 4

    Yo sólo tenía el mismo problema. El problema fue que hice en el conjunto de estas propiedades como «internos», mientras que ellos deben haber sido ‘público’. En caso de que alguien está todavía buscando 🙂

    Supongo, estas propiedades pueden ser internos/public demasiado, si se utilizan como este:

    public class Repository : DbContext
    {
        internal DbSet<Person> People { get; set; }
    
        public Repository()
        {
            //your code here...
            People = Set<Person>();
        }
    }
    • Esa es una manera muy inteligente para tener lo mejor de ambos mundos. Gracias

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Recent Articles

Python «set» con duplicados/elementos repetidos

Hay una forma estándar de representar un "conjunto" que puede contener elementos duplicados. Como yo lo entiendo, un conjunto tiene exactamente un cero o...

Python: generador de expresión vs rendimiento

En Python, ¿hay alguna diferencia entre la creación de un generador de objetos a través de un generador de expresión versus el uso de...

Cómo exportar/importar la Masilla lista de sesiones?

Hay una manera de hacer esto? O tengo que tomar manualmente cada archivo de Registro? InformationsquelleAutor s.webbandit | 2012-10-23

no distingue mayúsculas de minúsculas coincidentes en xpath?

Por ejemplo, para el xml a continuación <CATALOG> <CD title="Empire Burlesque"/> <CD title="empire burlesque"/> <CD...