2010-01-05 3 views
2

왜 Linq to SQL 디자이너는 다음 저장 프로 시저를 이해하지 못하고 올바르게 가져올 수 있습니까? SP가 명확 하나 개 이상의 데이터 행을 반환하더라도 Linq to SQL (디자이너) 저장 프로 시저를 이해하지 못합니다.

CREATE PROCEDURE dbo.MartinTest 
    @parameter1 INTEGER 

AS 
    SET NOCOUNT ON 

    SELECT C1, C2, C3 
    INTO #myTempTable 
    FROM MyTable 

    SELECT C1, C2, C3 
    FROM MyOtherTable INNER JOIN #myTempTable ON .... 

    RETURN 

내가이 저장 프로 시저를 가져 디자이너를 사용

, 그것은, "없음"으로 반환 형식을 설정합니다.

CREATE PROCEDURE dbo.MartinTest 
    @parameter1 INTEGER 

AS 
    SET NOCOUNT ON 

    SELECT C1, C2, C3 
    FROM MyTable 

    RETURN 

... 나는 단순히 원래의 테이블의 내용을 반환하는 대신 첫 번째 선택 문을 제거하면, 반면에 ... 디자이너는 잘 작동하고 올바른 반환 유형을 결정합니다.

BTW : 수동으로 저장 프로 시저에 대한 호출을 코딩 할 수 있으므로 임시 해결책을 찾고 있지 않다는 것을 알고 있습니다.이 버그가 디자이너에서 Linq에 대한 SQL인지 또는 SQL에 대한 버그인지 여부에 더 관심이 있습니다. 다른 것입니다. VS2008 SP1을 사용하고 있습니다.

감사합니다.

답변

3

이것은 기술적으로 Linq to SQL 디자이너의 문제는 아니지만 SQL Server와 관련된 문제입니다. Linq to SQL 디자이너는 SET FMTONLY ON을 사용하여 저장 프로 시저의 결과 집합 정보를 가져옵니다. 저장 프로 시저에 임시 테이블이 있으면이 메서드는 작동하지 않습니다.

ScottGu's blog post의 처음 몇 개의 설명에는 앞뒤가 약간 다릅니다.

+0

LINQ뿐 아니라 SSRS도 있으며 신은 무엇을 알고 있습니다! – gbn

1

수동으로 저장 프로 시저의 시작 부분에 SET FMTONLY OFF 수 있습니다. 아마도 일반적인 사용을 위해 주석 처리하고 LINQ 클래스를 생성 할 때 주석 처리를 제거하십시오.

관련 문제