У меня есть трехуровневое веб-приложение с кучей простых форм. Один для списка записей, один для редактирования одной записи и т. д. Работает.
У меня есть DataLayer, где находится мой EDMX. У меня есть уровень приложения, где находятся мои POCO. У меня есть BusinessLayer со всеми моими классами контроллеров и т. д. (не MVC!) У меня есть слой пользовательского интерфейса, где находится мой веб-интерфейс.
В EDMX есть много-много таблиц с множеством навигационных свойств. Конечно, когда я получаю данные в одном из моих контроллеров, например. GetCustomerById(int id), я создаю контекст объекта и закрываю его, когда закончу.
Однако ObjectContext
выходит за рамки, когда я пытаюсь получить доступ к свойствам навигации на уровне пользовательского интерфейса.
Должен ли я делать (using MyContext = new MyContext()) {... }
в веб-слое?? это не кажется правильным. Должен ли я создать еще один набор POCO, который я заполняю из данных сущностей из BizLayer? Что происходит, когда я хочу сохранить данные, введенные в веб-форму? Я бы назвал контроллер BizLayer, например. СохранитьКлиента()?
Мой вопрос: как спроектировать слой веб-интерфейса, если я хочу иметь правильный доступ к навигационным свойствам объекта?
Примечание. Для EDMX установлено значение LazyLoading.