Search

'SPLinq'에 해당되는 글 2건

  1. 2011.09.13 SPLINQ 를 통한 페이징
  2. 2010.05.12 SharePoint 2010 LINQ to SharePoint (1)

SPLINQ 를 통한 페이징

SharePoint 2010 2011.09.13 08:30 Posted by 정홍주

SPLINQ 를 통한 페이징

예전 글에서 SPQuery 통한 페이징에 대해서 다루어 보았습니다. 그리고 LINQ to SharePoint 에 대한 내용도 다루어 보았습니다. 앞부분에서 누락되어 정리해둡니다.

SPLINQ 를 통해서 페이징이 가능합니다. 원래 LINQ에 있는 기능일 뿐입니다. 아래에서 간단히 코드를 통해서 살펴보도록 하겠습니다.

간단히 Title 0에서 Tile 49까지 추가되어 있습니다.

SPMetal 을 이용해서 엔티티 클래스를 생성하고 프로젝트에 엔티티 클래스 파일을 추가했습니다.

자 그럼 1 페이지 코드를 살펴보도록 하겠습니다.

SPLINQ의 쿼리에서 Skip, Take를 사용하고 있습니다. 결과는 다음과 같습니다.

2 페이지의 경우는 int Page=2 라고 바꾸면 됩니다. 아래는 3 페이지의 결과입니다.

항목을 하나 더 추가하고 6 페이지로 가보도록 하겠습니다. 맨 마지막 항목 하나가 보입니다.

SPQuery의 경우보다 더 간단한 듯 합니다~


신고
크리에이티브 커먼즈 라이선스
Creative Commons License

SharePoint 2010 LINQ to SharePoint

SharePoint 2010 2010.05.12 09:00 Posted by 정홍주

이번 세션에서는 SharePoint 2010 Server Object Model 중에서 새롭게 등장한 LINQ to SharePoint 를 알아보도록 하겠습니다. 서버 개체 모델이므로 웹 파트 등 서버박스 위에서 실행됩니다.

 

LINQ 에 대한 내용은 잘 알고 계실 것이므로 구체적으로 언급하지 않아도 될 듯 하구요.
SharePoint
에서는 2010 버전에서 SharePoint 개체에 대한 LINQ를 사용할 수 있습니다
.
LINQ to SharePoint
SPLinq 라고도 부릅니다.

 

LINQ to SharePoint 가 별거 아니라고 볼 수도 있지만 CAML을 가지고 작업하는 것 보다는 생산성이
백만 배 향상되었다고 개인적으로 생각합니다.

 

CAML SPQuery 라는 클래스의 Query 라는 속성에 미리 정의되어 있는 XML 태그를 사용합니다.

간단한 예를 보시면 아래와 같습니다.

 

query.Query =@ "<Where>

                  <And>

                    <Eq><FieldRef Name=Title/><Value Type='Text'>”+

                      title +

                    "</Value></Eq>

                    <And>

                     </Where>";

 

위의 구문은 조건식이 하나로 Title이라는 필드의 값이 일치하는 것만 필터링하는 내용입니다. 위 구문 정도야 그냥 쓰면 되지 라고 하실 수 있지만 조건식이 AND, OR 가 여러 개 처리된다거나 다른 목록과 조인을 한다거나 요구사항이 조금만 복잡해지면 만들기 정말 복잡합니다. 에러는 발생하지 않는데 CAML이 틀려 값이 나오지 않으면 원인 해결에도 시간이 상당히 걸립니다.

 

그래서 SharePoint 2010에서는 SPLinq를 통해서 생산성을 높여주고 있습니다.

SPLinq를 사용하기 위해서는 먼저 SharePoint 개체 모델에 대한 Entity 클래스가 생성되어야 합니다. 그리고 나면 Entity 클래스를 이용해서 LINQ 구문을 작성하면 됩니다.

 

아래로 이동해서 “SPMETAL.EXE” 를 실행하면 됩니다. /? 로 도움말을 확인하실 수 있습니다.

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\BIN


SPMETAL Entity 클래스를 생성해주는 유틸리티이며 사이트 컬렉션 주소를 주면 해당 개체에 대한 프록시 클래스 형태를 제공해줍니다.

  

제가 적용할 시나리오는 아래와 같습니다.

아래처럼 공지사항이 있는데 SharePoint 라는 말이 제목에 있는 항목들만 필터링한 결과를 SPLinq를 통해 액세스해보도록 하겠습니다.


웹 파트를 만들거나 서버 박스 위에서 실행되는 유틸리티를 통해서 접근할 수 있습니다. 먼저 EXE를 통해 액세스 해봅니다.

 

Visual Studio 2010을 이용하여 WPF 응용 프로그램을 하나 생성합니다. 이름은 WpfSPLinqDemo 라고 하겠습니다.

 

이제 Entity 클래스를 생성해보도록 하겠습니다.


HJ 라는 클래스를 프로젝트에 추가해서 LINQ를 통해 액세스 하면 됩니다.

HJ 클래스를 살펴보면 SharePoint 목록에 대한 클래스와 속성을 가지고 있는 것을 알 수 있습니다.



위에서 보시는 것처럼 한글 SharePoint 를 액세스하면 클래스와 속성 이름이 한글로 나타나는 측면이 있으며 C# 코드에서도 한글로 클래스를 정의해야 한다는 것이 좀 이상해집니다. ~

 

이제 LINQ to SharePoint 코드를 작성해서 결과를 확인합니다.

WPF ListBox 컨트롤에 LINQ 결과를 바인딩해서 표시해줄 수 있습니다.


결과는 아래와 같습니다.



웹파트에 SPLinq를 적용한 결과는 아래와 같습니다.

SPLinq를 알아보았는데 실행시에는 CAML로 변경되어 처리가 됩니다. 개발자들이 직접 CAML을 작성하는 것보다는 SPLinq를 통해 생산성이 향상되는 내용을 알아보았습니다.


 

신고
크리에이티브 커먼즈 라이선스
Creative Commons License


 

티스토리 툴바