Как стать автором
Обновить

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

Вопрос насчет базы — вы начали с Code First, но зачем? Есть же Database First (причем этим список не оканчивается, есть еще Model First), спокойно бы работали с текущей структурой… Просто я так понимаю, что довольно утомительно руками писать однотипный код для десятков сущностей.

Насчет ConnectionString'ов — есть хорошая практика сначала сделать подключение (в Server explorer), а потом просто копировать connection string для него. Довольно удобно.
И насчет миллионов include — больше 5 уже не очень хорошо, а начиная с 10 начинаются очень серьезные проблемы с производительностью. Ну и я не помню, Single() может выполняться не в базе, а на клиенте. Когда запрос корректный и возвращается одна запись — то всё хорошо. Но если случайно с условием что-то случится, то будет возвращаться вся база, и только после загрузки всей БД код проитерируется до второй записи и упадет.

Сложные запросы с большим числом инклюдов, нетривиальной работы и т.п. лично я предпочитаю оформлять в виде хранимок, с говорящими именами. Все-таки работа с данными должна происходить в базе, а клиенту предоставлять только удобное АПИ + маленькие объектики по запросам, а не таблицы со всеми кишками наружу.

А вообще спасибо за статью, всё хочу мигрировать на MVC, да времени не хватает…
Насчет стратегии с базой, вы имеете в виду, что можно было строить проект сразу на старой базе? Я не уверен, что это бы получилось, там имена столбцов в таблицах русские, есть лишние данные, кое-что надо было поменять… А выбор между писать код или делать сначала новую базу — лично мне описывать Code First приятнее, хотя абсолютно согласен, что скучновато.

Насчет хранимых процедур и connectionString — спасибо, буду иметь в виду. Насчет Single действительно надо уточнить. Я просто решил, что один большой запрос — по идее должно быть лучше, чем много маленьких.
Зачастую много маленьких лучше. Но это зависит в первую очередь от размера таблицы. каждый инклуд это новый джоин что ни есть хорошо
Подгрузить их несложно, а вот передать в представление нельзя — она принимает только один параметр — модель


Есть такая штука как ViewBag. оно нетипизировано, так что можно пихать что угодно и в представлении его приводить к нужному типу.
я так передавал как раз всякие списки например, для полей.
НЛО прилетело и опубликовало эту надпись здесь
ну, можно еще partial' view использовать, с передачей в него нужного обьекта,
сейчас код не найду, но у себя в проекте я так тоже делал. но городить огород когда можно отправить через viewbag мой обьект а в вьюшке сказать, что mycoolclass есть обьект из viewbag.some проще и быстрее.
По поводу Include, в Вашем случае можно обойтись и без них потому, что у Вас включен LazyLoad, который подтягивает все зависимости сущности автоматически при загрузке этой сущности в контекст. Его я бы рекомендовал Вам выключить и уже тогда от них будет толк (в контексте он включен по умолчанию). Для выключения LazeLoading добавьте в свой конструктор: this.Configuration.LazyLoadingEnabled = false;
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории