연습: 비즈니스 데이터를 사용하여 SharePoint에 외부 목록 만들기
BDC(비즈니스 데이터 연결) 서비스는 SharePoint에서 백 엔드 서버 응용 프로그램, 웹 서비스 및 데이터베이스의 비즈니스 데이터를 표시할 수 있게 해 줍니다.
이 연습에서는 샘플 데이터베이스의 연락처 정보를 반환하는 BDC 서비스 모델을 만드는 방법을 보여 줍니다. 그 다음에는 이 모델을 사용하여 SharePoint에 외부 목록을 만듭니다.
이 연습에서는 다음 작업을 수행합니다.
프로젝트 만들기
모델에 엔터티 추가
Finder 메서드 추가
SpecificFinder 메서드 추가
프로젝트 테스트
사전 요구 사항
이 연습을 완료하려면 다음 구성 요소가 필요합니다.
지원되는 Microsoft Windows 및 SharePoint 버전. 자세한 내용은 SharePoint 솔루션 개발 요구 사항을 참조하십시오.
Visual Studio 2010 Professional 또는 Visual Studio ALM(Application Lifecycle Management)의 버전
AdventureWorks 샘플 데이터베이스에 액세스할 수 있는 권한. AdventureWorks 데이터베이스를 설치하는 방법에 대한 자세한 내용은 SQL Server Database Product Samples를 참조하십시오.
프로젝트 만들기
먼저 BDC 모델이 포함된 프로젝트를 만듭니다.
프로젝트를 만들려면
Visual Studio 2010를 시작합니다.
새 프로젝트 대화 상자를 열고 사용할 언어 아래의 SharePoint 노드를 확장한 다음 2010을 클릭합니다.
템플릿 창에서 비즈니스 데이터 연결 모델을 선택합니다. 프로젝트 이름으로 AdventureWorksContacts를 지정하고 확인을 클릭합니다.
SharePoint 사용자 지정 마법사가 나타납니다. 이 마법사를 사용하면 프로젝트를 디버깅하는 데 사용할 사이트와 솔루션의 신뢰 수준을 선택할 수 있습니다.
마침을 클릭하여 기본 로컬 SharePoint 사이트와 솔루션의 기본 신뢰 수준을 그대로 사용합니다.
프로젝트에 데이터 액세스 클래스 추가
프로젝트에 데이터 액세스 클래스를 추가하려면
도구 메뉴에서 데이터베이스에 연결을 클릭합니다.
연결 추가 대화 상자가 열립니다.
SQL Server AdventureWorks 샘플 데이터베이스에 대한 연결을 추가합니다. 자세한 내용은 연결 추가/수정(Microsoft SQL Server)을 참조하십시오.
솔루션 탐색기에서 프로젝트 노드를 클릭합니다.
프로젝트 메뉴에서 새 항목 추가를 클릭합니다.
설치된 템플릿 창에서 데이터 노드를 선택합니다.
템플릿 창에서 LINQ to SQL 클래스를 선택합니다.
이름 상자에 AdventureWorks를 입력한 다음 추가를 클릭합니다.
.dbml 파일이 프로젝트에 추가되고 O/R 디자이너(개체 관계형 디자이너)가 열립니다.
보기 메뉴에서 서버 탐색기를 클릭합니다.
서버 탐색기에서 AdventureWorks 샘플 데이터베이스를 나타내는 노드를 확장한 다음 테이블 노드를 확장합니다.
Contact (Person) 테이블을 O/R 디자이너로 끌어 놓습니다.
엔터티 클래스가 만들어져 디자인 화면에 표시됩니다. 이 엔터티 클래스에는 Contact (Person) 테이블의 열에 매핑되는 속성이 있습니다.
BDC 모델에서 기본 엔터티 제거
비즈니스 데이터 연결 모델 프로젝트는 모델에 Entity1이라는 기본 엔터티를 추가합니다. 이 엔터티를 제거합니다. 나중에 새 엔터티를 추가합니다. 비어 있는 모델로 시작하면 연습을 완료하는 데 필요한 단계가 줄어듭니다.
모델에서 기본 엔터티를 제거하려면
솔루션 탐색기에서 BdcModel1 노드를 확장한 다음 BdcModel1.bdcm 파일을 두 번 클릭합니다.
비즈니스 데이터 연결 모델 파일이 BDC 디자이너에서 열립니다.
디자이너에서 Entity1을 마우스 오른쪽 단추로 클릭한 다음 삭제를 클릭합니다.
솔루션 탐색기에서 Entity1.vb(Visual Basic) 또는 Entity1.cs(C#)를 마우스 오른쪽 단추로 클릭한 다음 삭제를 클릭합니다.
Entity1Service.vb(Visual Basic) 또는 Entity1Service.cs(C#)를 마우스 오른쪽 단추로 클릭한 다음 삭제를 클릭합니다.
모델에 엔터티 추가
모델에 엔터티를 추가합니다. Visual Studio 도구 상자의 엔터티를 BDC 디자이너로 끌어올 수 있습니다.
모델에 엔터티를 추가하려면
보기 메뉴에서 도구 상자를 클릭합니다.
도구 상자의 BusinessDataConnectivity 탭에 있는 엔터티를 BDC 디자이너로 끌어옵니다.
디자이너에 새 엔터티가 표시됩니다. Visual Studio에서 EntityService.vb(Visual Basic) 또는 EntityService.cs(C#) 파일을 프로젝트에 추가합니다.
보기 메뉴에서 속성 창을 클릭합니다.
속성 창에서 이름을 Contact로 설정합니다.
디자이너에서 엔터티를 마우스 오른쪽 단추로 클릭하고 추가를 클릭한 다음 식별자를 클릭합니다.
새 식별자가 엔터티에 나타납니다.
속성 창에서 식별자 이름을 ContactID로 변경합니다.
형식 이름 드롭다운 목록에서 System.Int32를 선택합니다.
SpecificFinder 메서드 추가
BDC 서비스에서 특정 연락처를 표시할 수 있도록 하려면 SpecificFinder 메서드를 추가해야 합니다. 사용자가 목록에서 항목을 선택하고 리본 메뉴에서 항목 보기 단추를 클릭하면 BDC 서비스에서 SpecificFinder 메서드를 호출합니다.
BDC 메서드 세부 정보 창을 사용하여 Contact 엔터티에 SpecificFinder 메서드를 추가합니다. 특정 엔터티를 반환하려면 메서드에 코드를 추가합니다.
SpecificFinder 메서드를 추가하려면
BDC 디자이너에서 Contact 엔터티를 선택합니다.
보기 메뉴에서 다른 창을 클릭한 다음 BDC 메서드 세부 정보를 클릭합니다.
BDC 메서드 세부 정보 창의 메서드 추가 드롭다운 목록에서 SpecificFinder 메서드 만들기를 선택합니다.
모델에 다음 요소가 추가됩니다. 이러한 요소는 BDC 메서드 세부 정보 창에 표시됩니다.
ReadItem 메서드
메서드의 입력 매개 변수
메서드의 반환 매개 변수
각 매개 변수에 대한 형식 설명자
메서드의 메서드 인스턴스
BDC 메서드 세부 정보 창에서 Contact 형식 설명자에 대해 표시되는 드롭다운 목록을 클릭한 다음 편집을 클릭합니다.
BDC 탐색기가 열립니다. BDC 탐색기는 모델의 계층적 뷰를 제공합니다.
속성 창에서 TypeName 속성 옆에 표시된 드롭다운 목록을 클릭하고 현재 프로젝트 탭을 클릭한 다음 Contact를 선택합니다.
BDC 탐색기에서 Contact을 마우스 오른쪽 단추로 클릭한 다음 TypeDescriptor 추가를 클릭합니다.
TypeDescriptor1이라는 새 형식 설명자가 BDC 탐색기에 표시됩니다.
속성 창에서 이름 속성을 ContactID로 설정합니다.
TypeName 속성 옆에 있는 드롭다운 목록을 클릭한 다음 Int32를 선택합니다.
Identifier 속성 옆에 있는 드롭다운 목록을 클릭한 다음 ContactID를 선택합니다.
6단계를 반복하여 다음 각 필드에 대한 형식 설명자를 만듭니다.
Name
형식 이름
FirstName
System.String
LastName
System.String
Phone
System.String
EmailAddress
System.String
EmailPromotion
System.Int32
NameStyle
System.Boolean
PasswordHash
System.String
PasswordSalt
System.String
BDC 디자이너의 Contact 엔터티에서 ReadItem 메서드를 두 번 클릭합니다.
코드 편집기에서 Contact 서비스 코드 파일이 열립니다.
ContactService 클래스에서 ReadItem 메서드를 다음 코드로 바꿉니다. 이 코드는 다음 작업을 수행합니다.
AdventureWorks 데이터베이스의 Contact 테이블에서 데이터를 검색합니다.
BDC 서비스에 Contact 엔터티를 반환합니다.
참고
ServerName 필드의 값을 서버 이름으로 바꿉니다.
Public Shared Function ReadItem(ByVal contactID As Integer) As Contact Const ServerName As String = "MySQLServerName" Dim dataContext As AdventureWorksDataContext = _ New AdventureWorksDataContext("Data Source=" & ServerName & _ ";Initial Catalog=AdventureWorks;Integrated Security=True") Dim Contact As Contact = _ (From TempContacts In dataContext.Contacts.AsEnumerable().Take(20) _ Where TempContacts.ContactID = contactID _ Select TempContacts).[Single]() Return Contact End Function
public static Contact ReadItem(int contactID) { const string ServerName = "MySQLServerName"; AdventureWorksDataContext dataContext = new AdventureWorksDataContext ("Data Source=" + ServerName + ";" + "Initial Catalog=AdventureWorks;Integrated Security=True"); Contact Contact = (from contacts in dataContext.Contacts.AsEnumerable().Take(20) where contacts.ContactID == contactID select contacts).Single(); return Contact; }
Finder 메서드 추가
BDC 서비스에서 목록에 연락처를 표시할 수 있도록 하려면 Finder 메서드를 추가해야 합니다. BDC 메서드 세부 정보 창에서 Contact 엔터티에 Finder 메서드를 추가합니다. BDC 서비스에 엔터티 컬렉션을 반환하려면 메서드에 코드를 추가합니다.
Finder 메서드를 추가하려면
BDC 디자이너에서 Contact 엔터티를 선택합니다.
BDC 메서드 세부 정보 창에서 ReadList 노드를 축소합니다.
ReadList 메서드 아래에 표시되는 메서드 추가 드롭다운 목록에서 Finder 메서드 만들기를 선택합니다.
메서드, 반환 매개 변수 및 형식 설명자가 추가됩니다.
BDC 디자이너의 Contact 엔터티에서 ReadList 메서드를 두 번 클릭합니다.
코드 편집기에서 Contact 서비스 코드 파일이 열립니다.
ContactService 클래스에서 ReadList 메서드를 다음 코드로 바꿉니다. 이 코드는 다음 작업을 수행합니다.
AdventureWorks 데이터베이스의 Contacts 테이블에서 데이터를 검색합니다.
Contact 엔터티 목록을 BDC 서비스에 반환합니다.
참고
ServerName 필드의 값을 서버 이름으로 바꿉니다.
Public Shared Function ReadList() As IEnumerable(Of Contact) Const ServerName As String = "MySQLServerName" Dim dataContext As AdventureWorksDataContext = _ New AdventureWorksDataContext("Data Source=" & ServerName & _ ";Initial Catalog=AdventureWorks;Integrated Security=True") Dim Contacts As IEnumerable(Of Contact) = _ From TempContacts In dataContext.Contacts.Take(20) _ Select TempContacts Return Contacts End Function
public static IEnumerable<Contact> ReadList() { const string ServerName = "MySQLServerName"; AdventureWorksDataContext dataContext = new AdventureWorksDataContext ("Data Source=" + ServerName + ";" + "Initial Catalog=AdventureWorks;Integrated Security=True"); IEnumerable<Contact> Contacts = from contacts in dataContext.Contacts.Take(20) select contacts; return Contacts; }
프로젝트 테스트
프로젝트를 실행하면 SharePoint 사이트가 열리고 비즈니스 데이터 연결 서비스에 모델이 추가됩니다. SharePoint에 Contact 엔터티를 참조하는 외부 목록을 만듭니다. AdventureWorks 데이터베이스의 연락처 데이터가 목록에 표시됩니다.
참고
솔루션을 디버깅하려면 먼저 SharePoint에서 보안 설정을 수정해야 할 수도 있습니다. 자세한 내용은 비즈니스 데이터 연결 모델 디자인을 참조하십시오.
프로젝트를 테스트하려면
F5 키를 누릅니다.
SharePoint 사이트가 열립니다.
사이트 작업 메뉴에서 기타 옵션을 클릭합니다.
만들기 페이지에서 외부 목록을 클릭한 다음 만들기를 클릭합니다.
사용자 지정 목록의 이름으로 Contacts를 지정합니다.
외부 콘텐츠 형식 필드 옆에 있는 찾아보기 단추를 클릭합니다.
외부 콘텐츠 형식 선택 대화 상자에서 AdventureWorksContacts.BdcModel1.Contact를 선택한 다음 만들기를 클릭합니다.
만들기를 클릭하여 연락처 목록을 만듭니다.
SharePoint에 외부 목록이 만들어지고 AdventureWorks 샘플 데이터베이스의 연락처가 이 외부 목록에 표시됩니다.
SpecificFinder 메서드를 테스트하려면 목록의 연락처를 클릭합니다.
리본 메뉴에서 항목 탭을 클릭합니다.
항목 탭에서 항목 보기를 클릭합니다.
선택한 연락처의 세부 정보가 폼에 나타납니다.
다음 단계
다음 항목에서는 SharePoint에서 BDC 서비스 모델을 디자인하는 방법에 대해 더 자세히 설명합니다.