간단한 양식의 3 계층 웹 응용 프로그램이 있습니다. 하나는 레코드를 나열하고 하나는 단일 레코드를 편집하는 것입니다.3 계층 응용 프로그램에서 Entity Framework의 ObjectContext를 어디에서 인스턴스화해야합니까?
내 EDMX가있는 DataLayer가 있습니다. 내 POCO가있는 App Layer가 있습니다. MVC가 아닌 모든 컨트롤러 클래스로 BusinessLayer를 볼 수 있습니다. 웹 UI가있는 UI 레이어가 있습니다.
EDMX에는 탐색 속성이 많이 포함 된 많은 테이블이 있습니다. 물론 컨트롤러 중 하나에서 데이터를 가져올 때. GetCustomerById (int id), Object Context를 생성하고 끝나면 닫는다.
그러나 UI 레이어의 탐색 속성에 액세스하려고 시도하면 ObjectContext
이 범위를 벗어납니다.
웹 레이어에서 (using MyContext = new MyContext()) {... }
해야합니까 ?? 그건 옳지 않은 것 같아. BizLayer의 엔티티 데이터로 채울 수있는 또 다른 POCO 집합을 만들어야합니까? 웹 양식에 입력 된 데이터를 저장하려면 어떻게됩니까? 예 : BizLayer 컨트롤러를 호출할까요? SaveCustomer()?
내 질문은 엔티티의 탐색 속성에 제대로 액세스 할 수 있도록하려면 어떻게 웹 UI 레이어를 디자인해야합니까?
참고 : EDMX는 LazyLoading으로 설정됩니다.
OMG이 질문은 몇 번이고 다시 온다 ... :) 내 asnwer 여기를 참조하십시오, 궁극적 인 진리 또는 갈 유일한 방법이 아니지만 지금까지 많은 합의가 있어요 ... http://stackoverflow.com/a/7474357/559144 –
감사합니다. 하지만 이것은 MVC가 아닙니다. 나에 대한 질문은 웹 UI에서 EF에 대한 의존성을 원하지 않는다면 POCO를 어떻게 처리하고 어떻게 올바르게 액세스/저장/편집 할 수 있는지에 관한 것입니다. – John
그게 내 대답에 설명되어 있습니다, 그것은 또한 웹 양식이나 Windows 양식 또는 WPF, 당신이 EF, NHibernate 등 모든 종속성에서 UI를 분리 레이어링에 적용 ... –