50

新しい 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.Peoplenullになります

私は何が欠けていますか?

  • Microsoft.Data.Entity.Ctp.dll が参照されています
  • データベース初期化子の有無にかかわらず試しました。
4

3 に答える 3

80

これは、 propertyの代わりに on Repository クラスのフィールドを定義するためです。プロパティを追加するか、自動プロパティに変更すると、 null の代わりに値が返され始めます。したがって、Repository クラスを次のように変更するだけです。DbSet<Person>People

public class Repository : DbContext
{
    public DbSet<Person> People { get; set; }
}
于 2010-11-24T22:12:55.487 に答える
47

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

于 2011-08-04T16:16:58.843 に答える
5

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

次のように使用すると、これらのプロパティも内部/パブリックになる可能性があると思います。

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

    public Repository()
    {
        //your code here...
        People = Set<Person>();
    }
}
于 2015-12-15T15:07:26.083 に答える