4
MVC3 프로젝트가 있는데 문제가 생겼습니다. 내 POCO 개체 중 하나를 매개 변수로 사용하는 Create 컨트롤러가 있습니다. 이 객체를 다음과 같이 데이터베이스에 추가합니다.POCO 개체를 EntityFramework의 Proxy 개체로 변환하십시오.
entity = dbSet.Add(entity);
이 메소드가 반환 된 후 객체의 지연로드 기능을 사용하고 싶습니다. 불행하게도 객체는 EntityFramework에 의해 생성 된 Proxy 객체가 아닙니다 ... 어떻게 든 이것을 해결할 수있는 방법이 있습니까? 당신이 Add
방법으로 통과 할 때
함께 작업 할 때 POCO 프록시를 사용하고 있습니까? 컨트롤러를 만드시겠습니까? 내가 아는 한, Entity Framework 및 POCO 프록시의 요구 사항 중 하나는 ObjectContextOptions.ProxyCreationEnabled를 true로 설정하여 전체 ObjectContext에서 프록시를 사용할 수 있기 때문에 POCO 및 POCO 프록시를 혼합하여 사용할 수 없습니다. 다음은 좋은 링크입니다 : http://msdn.microsoft.com/en-us/library/dd468057.aspx. – Josh
MVC3 프로젝트는 엔티티 프레임 워크를 완전히 인식하지 못하고 Models 프로젝트 (POCO 객체) 및 BAL (Repository 액세스)을 참조합니다. Lazy 로딩은 데이터베이스에서 쿼리 한 객체로 작업하는 한 프로젝트의 모든 레벨에서 훌륭하게 작동합니다. 기본적인 문제는 MVC3 프로젝트에서 객체를 생성하고 BAL에 전달하여이를 저장하고 컨텍스트에 적절하게 연결하는 것입니다. 그러나 프록시 객체가 아닌 POCO 객체에 대한 참조가 남아 있습니다. 게으른 로딩을 사용할 수 있습니다. – AFrieze
Ahhh, 잡았다. BAL로 정보를 보내고 ObjectContext.CreateObject (...)를 사용하도록 BAL을 수정 한 다음 결과 개체를 반환하면 모든 프록시 규칙이 충족되는 한 해당 개체는 POCO 프록시 여야합니다. 문제는 POCO 프록시 개체를 만들지 않는 entity = dbSet.Add (엔터티)를 사용하고 있다는 것입니다. – Josh