Linq to Entity и загрузка EntitySets - PullRequest
       3

Linq to Entity и загрузка EntitySets

2 голосов
/ 27 октября 2011

Это моя первая попытка понять Linq to Entity с Net Tiers.Борьба с этим, но не понимание некоторой логики, стоящей за этим ... например.Когда я использую:

Entity.EntitySet.Load()

и

context.Entity.Include("EntitySet").SingleOrDefault()

Кроме того, почему Include принимает строку, а не перечисление или сортировку?

Ответы [ 2 ]

1 голос
/ 27 октября 2011

В EF у вас есть концепции отложенной загрузки и быстрой загрузки.

  • Ленивая загрузка означает, что вы загружаете данные в тот момент, когда они вам нужны. Это делается с помощью вызова метода Load ().
  • Стремительная загрузка означает, что вы уже знаете заранее, что вам понадобятся некоторые данные, поэтому вы загружаете их в первоначальный запрос через Включить (строка).

Al tough Include принимает строку, это не значит, что вы не можете ее расширить!

Т4 это хорошая вещь. В проекте, над которым я работал, мы создали класс EntityProperty, который содержал статические свойства для всех навигационных свойств объекта. Таким образом, вы, по крайней мере, получите ошибку компиляции, если имя свойства изменится.

Если вы действительно хотите пойти еще дальше, вы можете создать метод Include, который принимает лямбда-выражения, а затем переставить дерево выражений перед выполнением его в QueryProvider. Тогда у вас будет хорошая статическая типизация.

0 голосов
/ 27 октября 2011

Включить обычно используется для загрузки связанных таблиц.Load явно загружает запрошенный объект.

Строка используется, потому что MS выбрала - не знает ни о каких реальных ограничениях.Что-то вроде того, как T4 решает проблему строковых действий в MVC - возможно, они дойдут до улучшения / расширения его для поддержки более строгой типизации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...