为什么我的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>(); } }