为什么我的DbContext DbSet为空?

我创build了一个新的entity framework代码第一个应用程序和DbSet(人)返回null。

public class Person { public int Id { get; set; } public string Name { get; set; } } public class Repository : DbContext { public DbSet<Person> People; } 

web.config :连接string

 <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
  • 我已经试过,没有数据库初始值设定项。

那是因为你在Repository类中定义了一个DbSet<Person>字段而不是属性 。 一旦你添加一个属性或者把它改成一个自动属性, People就会开始给你值而不是null。 所以你所要做的就是把你的Repository类改为:

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

我只是有同样的问题。 问题是我确实把这些属性设置为“内部”,而他们一定是“公开”的。 以防万一有人仍然在寻找:)

我只是有同样的问题。 问题是我确实把这些属性设置为“内部”,而他们一定是“公开”的。 以防万一有人仍然在寻找:)

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

 public class Repository : DbContext { internal DbSet<Person> People { get; set; } public Repository() { //your code here... People = Set<Person>(); } }