为什么我的DbContext DbSet为null?

时间:2010-11-24 19:36:45

标签: entity-framework code-first ef-code-first

我创建了一个新的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将为空

我缺少什么?

  • Microsoft.Data.Entity.Ctp.dll是 参考
  • 我试过和 没有数据库初始化程序。

3 个答案:

答案 0 :(得分:63)

那是因为你在Repository类而不是属性上定义了DbSet<Person>字段。添加属性或将其更改为自动属性后,People将开始为您提供值而不是null。所以你需要做的就是将你的Repository类更改为:

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

答案 1 :(得分:44)

我遇到了同样的问题。问题是我确实将这些属性设置为“内部”,而它们必须是“公共”的。以防有人仍在搜索:)

答案 2 :(得分:3)

  

我遇到了同样的问题。问题是我确实将这些属性设置为“内部”,而它们必须是“公共”的。以防有人仍在搜索:)

我想,如果您像这样使用它们,这些属性也可以是内部/公共的:

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

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