Подтвердить что ты не робот

Почему мой DbContext DbSet null?

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

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 будет null

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

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

Ответ 1

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

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

Ответ 2

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

Ответ 3

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

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

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

    public Repository()
    {
        //your code here...
        People = Set<Person>();
    }
}