web-dev-qa-db-ja.com

DbContext DbSetがnullになるのはなぜですか?

新しいEntity 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が参照されています
  • データベース初期化子を使用して、または使用せずに試しました。
44
Jamey McElveen

propertyの代わりに、RepositoryクラスでDbSet<Person>の-​​fieldを定義しているためです。プロパティを追加するか、プロパティを自動プロパティに変更すると、Peopleはnullではなく値を提供し始めます。したがって、必要なことは、Repositoryクラスを次のように変更することだけです。

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

私は同じ問題を抱えていました。問題は、これらのプロパティが「パブリック」である必要がある一方で、「内部」として設定したことです。誰かがまだ検索している場合に備えて:)

45
Martynas

私は同じ問題を抱えていました。問題は、これらのプロパティが「パブリック」である必要がある一方で、「内部」として設定したことです。誰かがまだ検索している場合に備えて:)

おそらく、これらのプロパティを次のように使用すれば、内部/パブリックにすることもできます。

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

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