43 votes

Pourquoi mon DbContext DbSet est-il nul?

J'ai créé une nouvelle application Code First Entity Frameworks et DbSet (People) renvoie la valeur null.

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

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

web.config : chaîne de connexion

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

Maintenant quand j'appelle

 Repository _repo = new Repository()
_repo.People;
 

_repo.People sera nul

Qu'est-ce qui me manque?

  • Microsoft.Data.Entity.Ctp.dll est référencé
  • J'ai essayé avec et sans initialiseur de base de données.

67voto

Morteza Manavi Points 20486

En effet, vous définissez un champ de DbSet<Person> sur la classe Repository au lieu d'une propriété . Une fois que vous avez ajouté une propriété ou l'avez modifiée en propriété automatique, People commencera à vous donner des valeurs au lieu de null. Donc, tout ce que vous avez à faire est de changer votre classe Repository en:

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

44voto

Martynas Points 525

Je viens d'avoir le même problème. Le problème était que j'avais défini ces propriétés comme "internes" alors qu'elles devaient être "publiques". Juste au cas où quelqu'un cherche encore :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X