Страницы

понедельник, 6 мая 2013 г.

EntityFramework DbSet.Include

Век живи, век учись - дураком помрешь.
В EF есть замечательный метод DbSet.Include позволяющий производить явную загрузку связанных сущностей из БД. Данная функциональность весьма полезна, иначе происходит отложенная загрузка, при обращении к связанной сущности.
Но почему-то все время у меня всплывало использование данного метода с параметром типа string, где прописывалось имя подгружаемой сущности.
Что, на самом деле, было жутко неудобно и опасно, т.к. при смене модели данных, часть функционала могла прекратить работать, а узнали бы мы о этом только в production. В интернете периодически видел запись метода Include с Expression в качестве параметра, но как-то не хватало времени разобраться, почему мне данная функциональность недоступна.
Ларчик открывался очень просто, надо было прописать правильный using в заголовке, а именно:
После этого, можно использовать нормальную нотацию с Expression:
Что сильно повышает качество кода, т.к. несовместимые изменения модели сразу всплывут на этапе компиляции.
Тесты проводились на EF 5.0, что там с остальными версиями, я не знаю.

1 комментарий :