При запросе "Включить" проверяет ли EF, существуют ли объекты в диспетчере состояний объектов?
Следует ли мне избегать использования Включить в запросах или я могу полагаться на EDM, который при создании запроса исключает его из элементов запроса, которые уже существуют в OSM?
1 ответ
Я почти уверен, что EF4 будет использовать что-либо в настоящее время в ObjectStateManager и загружать только те объекты, которых у него еще нет, но лучший способ убедиться в этом - просто протестировать его с запущенным SQL Profiler и посмотреть, верно ли это для способа Вы используете это.
Конечно, команда EF рекомендует использовать метод Include (), но если вы решите загрузить соответствующие строки позже, ObjectStateManager выполнит "исправление отношений", что может быть очень мощной функцией, которой можно воспользоваться.
Посмотрите на эту запись в блоге:
http://blogs.msdn.com/alexj/archive/2009/10/13/tip-37-how-to-do-a-conditional-include.aspx
В его блоге вы найдете множество отличных статей, касающихся структуры сущностей.