2

이제 막 Entity Framework 4.0과 ASP.NET MVC 2에서 시작하여 저장 프로 시저 및 페이징 사용과 관련하여 몇 가지 질문이 있습니다.Entity Framework 4 - 선택/페이징 저장 프로 시저 호출

삽입, 업데이트 및 삭제 작업을 저장 프로 시저에 매핑 할 수 있으며 이미 수행했습니다. 그러나 페이징이 작동하려면 선택 작업을 매핑해야합니다.

내 모델 브라우저로 가서 저장 프로 시저를 마우스 오른쪽 단추로 클릭하고 "함수 가져 오기 추가"를 클릭하여 추가 할 수있는 유일한 방법입니다.

이 다음 코드 결과 ....

var contactFormSubmissions = _entities.ContactFormSubmission_GetContactFormSubmissions(1, 10); 

이 나의 문제는 루트 레벨보다는 삽입/업데이트와 같은 ContactFormSubmission 엔티티 및 삭제에 글로벌 개체 컨테이너에 추가한다는 것입니다 행위.

나는 것보다는이 같은 있지만 통해 저장 프로 시저를 통해 뭔가 ...

_entities.ContactFormSubmissions.Select<ContactFormSubmission>(string.Empty, pageParam, pageSizeParam); 

선택은 다른 작업과 같은 방식으로 호출되고 나는 많은 기능에와 끝까지 그나마이 방법 관리 할 수 ​​없게 될 수있는 Entity Container의 루트.

이것은 현재 작동중인 최소한의 문제입니다.

다음 질문은이 기능을 사용하여 페이징을 가장 잘 구현하는 방법입니다.

MVC 및 Entity Framework를 사용하여 페이징을 수행하는 방법에 대해 본 모든 예제에서는 LINQ 및 IQueryable을 사용했습니다. IQueryable을 Lazy 로딩과 함께 사용하는 방법과 LINQ 함수 Skip/Take를 테이블 기반 함수/sproc과 함께 사용할 수 있습니까?

http://blog.wekeroad.com/2007/12/10/aspnet-mvc-pagedlistt/

PS - 엔티티 프레임 워크 MVC에서 페이징의 예 좋을 것 SP의를 사용!

답변

1

LINQ는 기본적으로 저장 프로 시저를 래핑하지 않습니다. Entity Framework 함수는 EF를 통해 저장 프로 시저를 호출하고 엔터티를 반환하는 유일한 방법입니다. EF가 페이징 변수를 매핑 할 매개 변수를 아는 것이 무엇인지 알고 있기 때문에 이해할 수 있습니다.

당신은이 작업을 수행하지 않겠습니다. 그러나 당신의 프로 시저에 대한 LINQ의 사용자 정의 구현을 작성할 수 있다고 말할 수는 없지만 (나는 불가능한 것이 없기 때문에) 강요당하는 느낌이 들지만, 절차.

제안 :

    당신이 기능을 통해 저장 프로 시저를 포장 EF와 함께 머물 경우 당신은 그냥 당신이 파손되어 많은 기능 문제를 완화 할 수 LINQ를 사용하여 저장 프로 시저
  • 를 건너 뛸 수 있습니다
  • 당신의 모델을 여러 컨텍스트로 모델링
  • EF 컨텍스트의 연결 속성을 사용하여 저장 프로 시저를 직접 호출하고 표시 목적으로 사용할 읽기 전용 (EF가 부착되지 않은) viewmodel 클래스를 사용할 수 있습니다.id 또는 다른 기본 키 필드는 여전히 실제 EF 객체의 편집 가능한 버전을 얻으려면 세부 정보 화면이나 json 콜백에 연결하는 데 적합한 값일 것입니다.

이 중 어느 것도 완벽하지는 않지만 이것을 처리 할 방법.

관련 문제