최근에 Entity Framework 5로 전환했습니다. 이제 기존 데이터베이스에서 POCO 클래스를 생성하고 지연로드와 변경 추적이 모두 필요합니다. 따라서 모든 스칼라 속성은 탐색 속성뿐 아니라 가상 속성이어야합니다.기존 데이터베이스에서 POCO 프록시를 생성하는 방법
새 ADO.Net 엔터티 데이터 모델을 추가하면 .edmx 파일과 다른 .cs 및 .tt 파일로 끝납니다.
기본적으로 생성 된 POCO 클래스가 기본적으로 변경 추적 프록시의 요구 사항을 충족하지 않는 이유가 궁금합니다. 즉 스칼라 속성은 가상이 아닙니다.
둘째, 프록시 사용 가능 poco 클래스를 어떻게 생성 할 수 있습니까?
추신 : 저는 Slauma의 대답을 지금까지 유일한 답변으로 받아 들였습니다. 그러나 나는 그 부분의 첫 부분에 동의하지 않습니다. 제한 및 성능 : 프록시 지원 단체에 대한 제한에 대해
: 여기
Slauma 약 2 프록시 문제를 이야기 내 주장이다 클래스는 엔티티에 의해 DB 첫 번째 방법에서 발생하는 경우 프레임 워크에서 변경 추적 프록시를 활성화하기 위해 클래스가 따라야하는 규칙은 제한적이지 않기 때문에 그다지 중요하지 않습니다. 네비게이션 컬렉션이 IList 또는 HashSet인지 실제로 누가 신경 쓰나요? 제한 사항에 대해 말하면 응용 프로그램에서 perior 디자인 클래스가 있고 테이블을 생성해야만 합리적입니다.
복잡한 속성은 DB에서 먼저 지원되지 않습니다. 따라서 우리는 토론에서 제외 할 수 있습니다.
성능에 관하여 : the addressed article에서 내가 지금까지 연구 한 결과는 스냅 샷을 위해 프록시를 거부하도록 설득력을 얻지 못합니다. 첫째, 10,000 개의 a.k.a라는 많은 수의 엔티티에서 실험이 수행되었습니다. 응용 프로그램 (데이터베이스가 아닌)의 배치 프로세스가 많은 수의 엔티티에서 작동하는 것은 결코 쉬운 일이 아니지만 저장 프로 시저와 같은 더 나은 접근 방법을 가정합니다. 둘째, 응용 프로그램 유형 및 요구 사항에 따라 일반적으로 저장소 패턴이 적용되고 사용되는 경우와 같이 몇 가지 사례를 처리합니다. 프록시와 스냅 샷의 성능에는 차이가 없습니다. 흥미롭게도 해결 된 실험에서 속성에 동일한 값을 다시 할당하는 것이 프록시 성능이 크게 저하되는 유일한 경우였습니다. 그러나 누가 이것을 정말로합니까? 변경 추적기에 반복적으로 알려주지 않도록주의하는 것은 매우 쉽습니다. 이 경우에도 많은 수의 유언을 다룰 때 심각한 문제가 발생합니다. 기본적으로 생성 된 POCO 클래스 변경 내용 추적 프록시의 요구 사항, 가상 없습니다 즉 스칼라 속성을 충족하지 않는 이유
답변 해 주셔서 감사합니다. 나는 당신의 대답의 첫 부분에 동의하지 않고 논쟁을 반영하기 위해 나의 질문을 업데이트했다. 그러나 두 번째 부분은 매우 유용했습니다. 나는 Code-First 모델을 알고 있지만 그것은 내 관심사가 아니다. – Alireza
@ Alireza : 부분적으로 첫 번째 부분에 대한 평론가의 의견에 동의합니다. 나는 변화 추적 프록시 (http://stackoverflow.com/a/7112470/270591)의 팬이었고 그들은 나의 프로젝트 중 하나에서 생명의 은인이었다. 아서 빅커 (Arthur Vicker)의 기사가 발표 된 후 사용하기에 조금 더 조심스럽게되었습니다. 첫 번째 부분은 새로운 t4 템플릿이 POCO를 만들 때 왜 스칼라 속성에서'virtual' 수정자를 제거했는지 설명하기 위해 EF 팀의 견해를 인용 한 것일뿐입니다. – Slauma
어쩌면 그들은 당신이 말한 것과 같이 추론했지만, 여전히 그들은 프록시를 다시 활성화하는 방법을 가르쳐 줄 수있었습니다. 이것은 마이크로 소프트에 의해 침묵으로 말미암아 프록시에 버그가 있다고 생각할 수 있습니다. – Alireza