У меня есть трехуровневое веб-приложение с набором простых форм. Один для списка записей, один для редактирования одной записи и т. Д. Работы.Где я могу создать экземпляр ObjectContext объекта Entity Framework в 3-уровневом приложении
У меня есть DataLayer, где мой EDMX есть. У меня есть уровень приложения, где мои POCOs. I haev BusinessLayer со всеми моими классами контроллера и т. Д. (Не MVC!) У меня есть слой пользовательского интерфейса, где мой веб-интерфейс.
В EDMX есть много, много таблиц с множеством навигационных свойств. Конечно, когда я извлекаю данные в одном из моих контроллеров, например. GetCustomerById (int id), я создаю контекст объекта и закрываю его, когда закончите.
Однако, когда я пытаюсь получить доступ к свойствам навигации в слое пользовательского интерфейса, значение ObjectContext
недоступно.
Должен ли я делать (using MyContext = new MyContext()) {... }
в веб-слое ?? это не кажется правильным. Должен ли я создать другой набор POCOs, который я заполняю данными сущностей из BizLayer? Что происходит, когда я хочу сохранить данные, введенные в веб-форме? Я бы назвал контроллер BizLayer, например. SaveCustomer()?
Мой вопрос: как вы создаете слой пользовательского интерфейса, если я хочу иметь возможность правильно обращаться к свойствам навигации объекта?
Примечание: EDMX установлен в LazyLoading.
OMG этот вопрос возвращается снова и снова ... :) см. Мой asnwer здесь, это не последняя истина или единственный способ пойти, но я получил много консенсуса до сих пор ... http://stackoverflow.com/a/7474357/559144 –
Спасибо. Однако это не MVC. Вопрос для меня в том, что если я не хочу зависимости от EF в веб-интерфейсе, то как мне обращаться с POCOs и как правильно обращаться/сохранять/редактировать их. – John
, что объясняется в моем ответе, оно применяется также к формам веб-форм или окон или WPF, так как вы изолируете пользовательский интерфейс от любой зависимости от EF, NHibernate и т. Д. –