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.People将为空

我错过了什么?

  • 引用了 Microsoft.Data.Entity.Ctp.dll
  • 我尝试过使用和不使用数据库初始化程序。
4

3 回答 3

80

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

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 回答