2012-09-03 3 views
3

사과는 잘하지만, VS2012/.NET 4.5로 업그레이드 한 후, 나는 테이블 반환 함수 우리는 사용자 정의 데이터 영역/ORM을 사용 5.EF 5의 테이블 가치 기능?

엔티티 프레임 워크에 가능합니다 알고 이러면를 표현한 경우, 내가 사용하지 말아 코드 예제를 찾을 수 없습니다 EDMX 모델 생성기는 아무 쓸모가 없습니다.

테이블 값 기능을 정의하는 코드 중 일부는 OnModelCreating(DbModelBuilder modelBuilder)에 추가해야 할 것이라고 나는 매우 추측합니다.

도움을 주시면 감사하겠습니다.

답변

6

코드 첫 번째 전략에서는 테이블 값 함수가 지원되지 않으며 EDMX 인 데이터베이스 우선 : http://msdn.microsoft.com/en-us/hh859577에만 지원됩니다. 제품 견적 :

TVF는 현재 데이터베이스 우선 작업에서만 지원됩니다.

+1

EF 6에서도 여전히 지원되지 않는 것으로 보입니다. CodePlex 818 호에 투표하십시오. https://entityframework.codeplex.com/workitem/818 –

+0

해당 기능을 발견했습니다. EF 6이 끝날 때까지 연기되었습니다. 여기에 사용자 음성 게시판에 투표하십시오 : http://data.uservoice.com/forums/72025-entity-framework-feature-suggestions/suggestions/2686351-code-first-support- 테이블 값 함수 –

-1

다음 링크는이 링크 http://blogs.msdn.com/b/adonet/archive/2011/06/30/walkthrough-table-valued-functions-june-ctp.aspx에서 제거되었습니다. 나는 당신에게 유용 할 수있는이 정보를 발견했습니다.

코드 첫 번째 방법

엔티티 프레임 워크 2011년 6월 CTP는 TVFs에 대한 코드 먼저 지원을 포함하지 않습니다. 그러나 TVF에 대해 DbContext를 사용할 수 있습니다. DbContext 템플릿을 모델에 추가하여 할 수 있습니다. 캔버스에 마우스 오른쪽 버튼을 클릭에게 코드 생성 항목 추가에

  • 를 클릭
  • 선택 ADO.NET DbContext 생성기 V4.2을

    • 열기 NorthwindModel.edmx과 : 템플릿을 추가하는 단계는 다음과 같다 내가 쉽게로 EF 5를 사용하여 테이블 값 함수를 실행 할 수 있었다
  • 2

    추가 템플릿의 이름을 입력하고 확인을 클릭하면 다음과

    int orderID = 100; 
    var query = context.Database.SqlQuery<Product>("Select * from [dbo].[tfn_GetOrderProducts](@p0)", orderID); 
    var results = query.ToList(); 
    

    여기서 Product는 멤버 이름이 테이블 값 함수의 결과와 일치하는 모든 POCO 클래스가 될 수 있습니다.

    이것은 완벽한 솔루션이 아닙니다. IQueryable을 반환하지 않으므로 이것을 더 큰 LINQ 쿼리의 일부로 사용할 수 없습니다. 그러나,이 경우, 그것은 내가 필요로하는 전부였습니다.