c#DbSet - 无法获取内部对象

时间:2011-10-03 14:57:19

标签: c# entity-framework-4 ado.net

我需要将实体切换到内部。所以我创造了它。没有构建/运行时错误。但是当我想使用DbSet对象时,我不能,因为对象似乎没有初始化!

我的ContextEntities:

public partial class Entities
{
   internal DbSet<Employee> EmployeeSet { get; set; }
}

我这样用:

Entities context = new Entities();
List<Employee> employees = context.EmployeeSet.ToList();

但“EmployeeSet”为空。我认为这是因为它没有在get中实例化。如果我像这样公开使用它是有效的:

public partial class Entities
{
   public DbSet<Employee> EmployeeSet { get; set; }
}

问题: 如果DbSet标记为内部,它可以工作吗?如果是这样的话?为什么会破坏它? (感谢Scott Stafford)

2 个答案:

答案 0 :(得分:24)

如果未设置为public,则不会自动实例化。您可以使用Set<TEntity>()方法手动实例化它。

public partial class Entities
{
   internal DbSet<Employee> EmployeeSet { get; set; }

   public Entities()
   {
       EmployeeSet = Set<Employee>();
   }
}

答案 1 :(得分:2)

我遇到了同样的问题,只能将getter设置为internal来修复它。

public partial class Entities
{
   public DbSet<Employee> EmployeeSet { internal get; set; }
}