asp.net mvc - правильный подход (2 вопроса)
От: J_K  
Дата: 03.02.11 02:10
Оценка:
Здравствуйте.
Есть сайт на asp.net mvc (в разработке). Много страниц, описывающих что-либо. Например, страница, где можно редактировать свойства книги (она же для создания новой). Там на этой странице из выпадающих списков можно выбрать например, язык, на котором написана книга, страну, где она издалась, издателя и т.д.
А теперь вопросы.

1. Поскольку модель сущности книги содержит информацию только о данной сущности, то приходится списки (которые будут загружены в выпад. списки) подгружать дополнительно. Я это делаю через ViewData. На странице примерно так получается:

<option value="0" selected>Select language</option>
            <% foreach (Language lang in (List<Language>)ViewData["Languages"])
               { %>
               <option value="<% = lang.LanguageId %>"><%= lang.LanguageEnglishName %></option>
               <%} %>
        </select>


Правильный ли это подход? Или лучше как-то по-другому делать? Т.е. вопрос не о реализации дропдауна, а о реализации подхода в целом (через ViewData).

2. Когда списков несколько, то и вьюдат приходится создавать несколько. В результате в контроле код получается например такой:

LanguageRepository langRep = new LanguageRepository();
ViewData["Languages"] = langRep.AllLanguages();

PublishingHouseRepository houseRep = new PublishingHouseRepository();
ViewData["PH"] = houseRep.AllPublishingHouses();


Соответственно каждый репозиторий дергает контекст:

using (LangDBContext context = new LangDBContext())
            {
                languages = context.Languages.Select(l => l).ToList();
            }
return languages;


Но ведь каждый раз, когда дергается этот контекст (из модели EF), создается соединение, потом разрывается, потом опять создается и т.д. По-моему, при наличии достаточно большого числа юзеров база данных просто отвалится. Или нет? Одним словом, правильный ли это подход? (Про IoC пока не надо, я это реализую в дальнейшем, пока хотелось бы просто понять, как правильно реализовывать на этом уровне.)

Спасибо!
Life is very short and there's no time
for fussing and fighting... (C) Paul McCartney & John Lennon
asp.net mvc
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.