我创建了一个新的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
将为空
我缺少什么?
答案 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>();
}
}