Должны ли наборы баз данных вложенных классов определяться в DbContext?

#entity-framework #entity-framework-6

#entity-framework #entity-framework-6

Вопрос:

Рассмотрим следующий код:

 public class MainObject
{
    public int Id { get; set; }
    List<NestedObject> NestedObjects { get; set; }
}

public class NestedObject
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public class ExampleContext : DbContext
{
    DbSet<MainObject> MainObjects { get; set; }

    // Should it be here? Code works without it...
    // DbSet<NestedObject> NestedObjects { get; set; }
}

// ( ... )

var nestedFooObjects = exampleContext.Get<NestedObject>()
      .Where(obj => obj.Name == "foo").ToList(); // still works
  

У меня сложилось впечатление, что DbContext должен содержать все таблицы, к которым можно получить прямой доступ из кода. Таким образом, без DbSet< NestedObject > должно быть возможно только получение MainObjects, а затем поиск вложенных объектов внутри основных. По-видимому, это не так, как показывают мои эксперименты. Я хочу получить NestedObjects напрямую, как в примере выше. В таком случае: должен ли DbSet< NestedObject > быть определен вообще? Это не обязательно для запуска кода…

Комментарии:

1. Не могли бы вы, пожалуйста, поделиться своим кодом инициализации / конфигурации EF, в котором вы сопоставили классы сущностей с таблицами БД?

2. Я не совсем уверен, что понимаю ваш вопрос. Я использую подход, основанный на коде, поэтому классы и DbContext — это практически все, что у меня есть.