Почему мой DbContext DbSet нулевой? - PullRequest
41 голосов
/ 24 ноября 2010

Я создал новое приложение Entity Frameworks Code First, и DbSet (People) возвращает ноль.

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

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

web.config : строка подключения

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

Теперь, когда я звоню

Repository _repo = new Repository()
_repo.People;

_repo.People будет нулевым

Чего мне не хватает?

  • Microsoft.Data.Entity.Ctp.dll является ссылка
  • Я пытался с и без инициализатора базы данных.

Ответы [ 3 ]

65 голосов
/ 25 ноября 2010

Это потому, что вы определяете поле из DbSet<Person> в классе репозитория вместо свойства . Как только вы добавите свойство или измените его на автоматическое, People начнет давать вам значения вместо нуля. Поэтому все, что вам нужно сделать, это изменить свой класс репозитория на:

public class Repository : DbContext
{
    public DbSet<Person> People { get; set; }
}
44 голосов
/ 04 августа 2011

У меня просто была такая же проблема. Проблема заключалась в том, что я установил эти свойства как «внутренние», в то время как они должны быть «общедоступными». На всякий случай, если кто-то еще ищет:)

4 голосов
/ 15 декабря 2015

У меня просто была такая же проблема.Проблема заключалась в том, что я установил эти свойства как «внутренние», в то время как они должны быть «общедоступными».На всякий случай, если кто-то все еще ищет:)

Полагаю, эти свойства также могут быть внутренними / открытыми, если вы используете их следующим образом:

...