С# DbSet - Внутренний объект нельзя получить

Мне нужно переключить сущность на внутреннюю. Поэтому я его создаю. Ошибка сборки/времени выполнения. Но когда я хочу использовать объект DbSet, я не могу, потому что объект кажется не инициализированным!

My ContextEntities:

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

Я использую вот так:

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

Но "EmployeeSet" имеет значение null. Я думаю, это потому, что он не создан в получении. Он работает, если я использую public следующим образом:

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

Вопросы: Может ли он работать, если DbSet отмечен как внутренний? Если да, то как? Почему это нарушает его? (спасибо Скотту Стаффорду)

Ответ 1

Он не будет автоматически создан, если он не установлен на public. Вы можете вручную создать его экземпляр с помощью метода Set<TEntity>().

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

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

Ответ 2

У меня была такая же проблема, и я смог ее исправить, установив геттер как internal.

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