2009-02-27 3 views
6

LINQ가 SQL 디자이너에게 생성 한 저장 프로 시저 결과의 클래스 이름을 designer.cs와 함께 변경하는 방법은 무엇입니까?LINQ to SQL : 저장 프로 시저 결과

또한 어떻게 저장 프로 시저의 결과 집합에 대해 linq 쿼리를 수행 할 수 있습니까?

+0

도움이되는 기사 : http://blog.benhall.me.uk/2008/05/linq-to-sql-stored-procedure-vs.html –

답변

7

당신은 DBML이를 편집 할 수 있습니까? 개인적으로, 나는 DAL에 로컬 DTO들과 (함수에서 저장 프로 시저) 자동 생성 유형을 치료하는 경향이있다, 그래서 나는 바로 내 자신의 POCO 표현에 다시 매핑 - 등

var qry = from row in ctx.SomeProc(12345) 
      select new Foo {ID = row.ID, Name = row.Name }; 

을 즉 다시 두 번째 질문은 "또한 어떻게 저장 프로 시저의 결과 집합에 대한 linq 쿼리를 수행 할 수 있습니까?" - 당신이 그것을 구성하려는 경우 내가 저장 프로 시저 대신 UDF를 사용하는 것이 좋습니다 :이 데이터베이스에서 구성을 수행 할 수 있습니다, 예를 들어, 페이징 및 필터링 :

var qry = (from row in ctx.SomeFunction(12345) 
      where row.IsActive 
      select row).Skip(10).Take(10); 

해야 (에 LINQ - 투 -SQL 적어도) 서버에서 TSQL의 모든 작업을 수행하십시오. 그렇지 않으면, 당신은 AsEnumerable()를 호출 할 수 있으며 호출 .NET 계층에서 LINQ - 투 - 객체를 사용합니다 (이 그냥 XML입니다)

var qry = (from row in ctx.SomeProc(12345).AsEnumerable() 
      where row.IsActive 
      select row).Skip(10).Take(10); 

이 DBML을 편집하려면 ElementType/@Name 여기 변경 :

<Function Name="dbo.CustOrderHist" Method="CustOrderHist"> 
    <Parameter Name="CustomerID" Parameter="customerID" Type="System.String" DbType="NChar(5)" /> 
    <ElementType Name="FooBar"> <!-- ********** HERE ************ --> 
     <Column Name="ProductName" Type="System.String" DbType="NVarChar(40) NOT NULL" CanBeNull="false" /> 
     <Column Name="Total" Type="System.Int32" DbType="Int" CanBeNull="true" /> 
    </ElementType> 
</Function> 
+0

Ah! 맞아 - 나는 "select row"를 놓쳤다. 고정 –

+0

DOH! LINQ로 작업 할 때 실제로 도움이되는 것을 알고 있습니까? using System.Linq; –

2

또한 절차의 결과 집합에 대해 linq 쿼리를 수행 할 수 있습니까?

var query = from results in datacontext.storedprocedurename() 
      where results.whatever == 1 
      select results; 
관련 문제