2013-05-09 3 views
0

MSDN의 문서가 그때 내 선택 문 중 하나가 돌아 오면 무엇을이LINQ는

IMultipleResults sprocResults = 
    db.MultipleResultTypesSequentially(); 

// First read products. 
foreach (Product prod in sprocResults.GetResult<Product>()) 
{ 
    Console.WriteLine(prod.ProductID); 
} 

// Next read customers. 
foreach (Customer cust in sprocResults.GetResult<Customer>()) 
{ 
    Console.WriteLine(cust.CustomerID); 
} 

같은 LINQ에서 읽을이

CREATE PROCEDURE MultipleResultTypesSequentially 
AS 
select * from products 
select * from customers 

같은 저장 프로 시저를 쓸 수 있다고 선택 일반 테이블 개체 이외의 다른 개체 - 조인 또는 특정 열만 선택?

LINQ가 다음 SELECT를 읽고 싶다는 것을 어떻게 알 수 있습니까 ??? 기본적으로 MSDN에서 읽은 제품은 저장 프로 시저에서 해당 순서로 작성되었거나 고객이 입력 한 결과를 찾기 위해 .GetResult<Customer>()라고 쓰여 있기 때문에 처음에는 제품을 읽는 것으로 나타났습니다. foreach 루프는이 알 수없는 유형에 대해 어떻게 생겼을까요?

답변

1

유사한 저장 프로 시저로 빠른 테스트를 수행했는데 foreach 루프가 올바른 순서가 아니면 InvalidOperationException이 발생하므로 C#이 올바른 결과를 찾을 수없는 것처럼 보입니다. GetResult<>에 사용 된 타입.

테이블이 아닌 다른 것을 반환하는 select 문에 대해 서버 탐색기에서 Linq to Sql 디자이너로 저장 프로 시저를 끌면 디자이너는 출력 된 프로 시저를 기반으로 클래스를 자동 생성합니다. 필자는 두 가지 조인 된 테이블을 가진 프로 시저를 만들었습니다. 둘 중 어느 것도 내 프로젝트에 존재하지 않았습니다. 그리고 Linq가 Sql에서 StoredProcedureNameResult와 같은 형식을 만들었으므로 GetCreditCard라는 프로 시저에 GetCreditCardResult라는 형식이 있습니다.