逐步解說:使用商務資料在 SharePoint 中建立外部清單

商務資料連接 (BDC) 服務可讓 SharePoint 顯示後端伺服器應用程式、Web 服務和資料庫中的商務資料。

本逐步解說將示範如何為傳回範例資料庫中聯絡人相關資料的 BDC 服務建立模型, 然後您將使用此模型在 SharePoint 中建立外部清單。

這個逐步解說將說明下列工作:

  • 建立專案。

  • 在模型中新增實體。

  • 加入搜尋方法。

  • 加入特定搜尋方法。

  • 測試專案。

必要條件

您需要下列元件才能完成此逐步解說:

  • 支援的 Microsoft Windows 和 SharePoint 版本。 如需詳細資訊,請參閱開發 SharePoint 方案的要求

  • Visual Studio 2010 Professional 或某個 Visual Studio Application Lifecycle Management (ALM) 版本。

  • AdventureWorks 範例資料庫的存取權限。 如需如何安裝 AdventureWorks 資料庫的詳細資訊,請參閱 SQL Server 範例資料庫 (英文)。

建立專案

首先,請建立包含 BDC 模型的專案。

若要建立專案

  1. 啟動 Visual Studio 2010。

  2. 開啟 [新增專案] 對話方塊、在您要使用的語言下展開 [SharePoint] 節點,然後按一下 [2010]。

  3. 在 [範本] 窗格中,選取 [商務資料連接模型], 將專案命名為 AdventureWorksContacts,然後按一下 [確定]。

    [SharePoint 自訂精靈] 隨即出現。 這個精靈可讓您選取用來偵錯專案的網站以及方案的信任層級。

  4. 按一下 [完成] 以接受預設的本機 SharePoint 網站,以及方案的預設信任層級。

在專案中加入資料存取類別

若要在專案中加入資料存取類別

  1. 在 [工具] 功能表上,按一下 [連接至資料庫]。

    [加入連接] 對話方塊隨即開啟。

  2. 加入 SQL Server AdventureWorks 範例資料庫的連接。 如需詳細資訊,請參閱 新增/修改連接 (Microsoft SQL Server)

  3. 在 [方案總管] 中,按一下專案節點。

  4. 按一下 [專案] 功能表上的 [加入新項目]。

  5. 在 [已安裝的範本] 窗格中選取 [資料] 節點。

  6. 在 [範本] 窗格中選取 [LINQ to SQL 類別]。

  7. 在 [名稱] 方塊中輸入 AdventureWorks,然後按一下 [加入]。

    專案中隨即加入一個 .dbml 檔,並開啟物件關聯式設計工具 (O/R 設計工具)。

  8. 在 [檢視] 功能表上按一下 [伺服器總管]。

  9. 在 [伺服器總管] 中展開表示 AdventureWorks 範例資料庫的節點,然後再展開 [資料表] 節點。

  10. 將 [Contact (Person)] 資料表拖曳到 O/R 設計工具上。

    實體類別隨即建立並出現在設計介面上。 這個實體類別的屬性會對應至 [Contact (Person)] 資料表中的資料行。

從 BDC 模型中移除預設實體

[商務資料連線模型] 專案會將名為 Entity1 的預設實體新增至模型, 請移除這個實體。 稍後,您將加入新的實體。 在一開始就使用空模型,可減少完成逐步解說所需的步驟數目。

若要從模型中移除預設實體

  1. 在 [方案總管] 中展開 [BdcModel1] 節點,然後按兩下 [BdcModel1.bdcm] 檔案。

  2. 商務資料連接模型檔案隨即在 [BDC 設計工具] 中開啟。

  3. 在設計工具中以滑鼠右鍵按一下 [Entity1],然後按一下 [刪除]。

  4. 在 [方案總管] 中以滑鼠右鍵按一下 Entity1.vb (使用 Visual Basic 時) 或 Entity1.cs (使用 C# 時),然後按一下 [刪除]。

  5. 以滑鼠右鍵按一下 Entity1Service.vb (使用 Visual Basic 時) 或 Entity1Service.cs (使用 C# 時),然後按一下 [刪除]。

在模型中新增實體

將模型新增至實體。 您可以將實體從 Visual Studio [工具箱] 拖曳至 BDC 設計工具上。

若要在模型中新增實體

  1. 在 [檢視] 功能表上,按一下 [工具箱]。

  2. 從 [工具箱] 的 [BusinessDataConnectivity] 索引標籤中,把一個實體拖曳至 BDC 設計工具。

    新實體隨即出現在設計工具中。 Visual Studio 會將檔案加入至名為 EntityService.vb (使用 Visual Basic 時) 或 EntityService.cs (使用 C# 時) 的專案。

  3. 在 [檢視] 功能表中,按一下 [屬性視窗]。

  4. 在 [屬性視窗] 中,將 [名稱] 設定為 Contact。

  5. 在設計工具中,以滑鼠右鍵按一下實體,再按一下 [加入],然後按一下 [識別項]。

    新識別項隨即出現在實體上。

  6. 在 [屬性視窗] 中,將識別項的名稱變更為 ContactID。

  7. 在 [型別名稱] 下拉式清單中,選取 [System.Int32]。

加入特定搜尋方法

若要讓 BDC 服務顯示特定的連絡人,您必須加入「特定搜尋」方法。 當使用者在清單中選取項目,然後按一下 [功能區] 中的 [檢視項目] 按鈕時,BDC 服務便會呼叫特定搜尋方法。

請使用 [BDC 方法詳細資料] 視窗,在 Contact 實體中加入特定搜尋方法。 若要傳回特定實體,請在方法中加入程式碼。

若要加入特定搜尋方法

  1. 在 BDC 設計工具上選取 [Contact] 實體。

  2. 按一下 [檢視] 功能表上的 [其他視窗],然後按一下 [BDC 方法詳細資料]。

  3. 在 [BDC 方法詳細資料] 視窗的 [新增方法] 下拉式清單中,選取 [建立特定搜尋方法]。

    Visual Studio 會將下列項目加入至模型。 這些項目會顯示在 [BDC 方法詳細資料] 視窗中。

    • 名為 ReadItem 的方法。

    • 此方法的輸入參數。

    • 方法的傳回參數。

    • 各個參數的型別描述元。

    • 此方法的方法執行個體。

  4. 在 [BDC 方法詳細資料] 視窗中,按一下針對 [Contact] 型別描述元而顯示的下拉式清單,然後按一下 [編輯]。

    [BDC 總管] 隨即開啟。 [BDC 總管] 可讓您以階層方式檢視模型。

  5. 在 [屬性] 視窗中按一下出現在 [TypeName] 屬性旁邊的下拉式清單,按一下 [目前專案] 索引標籤,然後選取 [連絡人]。

  6. 在 [BDC 總管] 中,以滑鼠右鍵按一下 [連絡人],然後按一下 [加入型別描述元]。

    名為 [TypeDescriptor1] 的新型別描述元隨即在 [BDC 總管] 中顯示。

  7. 在 [屬性視窗] 中,將 [名稱] 屬性設定為 ContactID。

  8. 按一下 [TypeName] 屬性旁邊的下拉式清單,然後選取 [Int32]。

  9. 按一下 [Identifier] 屬性旁邊的下拉式清單,然後選取 [ContactID]。

  10. 重複步驟 6,為下列各個欄位建立型別描述元。

    名稱

    型別名稱

    FirstName

    System.String

    LastName

    System.String

    Phone

    System.String

    EmailAddress

    System.String

    EmailPromotion

    System.Int32

    NameStyle

    System.Boolean

    PasswordHash

    System.String

    PasswordSalt

    System.String

  11. 在 BDC 設計工具的 [Contact] 實體上,按兩下 [ReadItem] 方法。

    Contact 服務程式碼檔案隨即在 [程式碼編輯器] 中開啟。

  12. 在 ContactService 類別中,使用下列程式碼取代 ReadItem 方法。 這個程式碼會執行下列工作:

    • 從 AdventureWorks 資料庫的 [連絡人] 資料表擷取記錄。

    • 將 Contact 實體傳回至 BDC 服務。

    注意事項注意事項

    將 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;
    }
    

加入搜尋方法

若要讓 BDC 服務顯示清單中的連絡人,您必須加入搜尋方法。 請使用 [BDC 方法詳細資料] 視窗,在 Contact 實體中加入搜尋方法。 若要將實體集合傳回至 BDC 服務,請在方法中加入程式碼。

若要加入搜尋方法

  1. 在 BDC 設計工具中選取 [Contact] 實體。

  2. 在 [BDC 方法詳細資料] 視窗中,摺疊 [ReadList] 節點。

  3. 從在 [ReadList] 方法下方顯示的 [加入方法] 下拉式清單中,選取 [建立搜尋方法]。

    Visual Studio 會加入方法、傳回參數以及型別描述元。

  4. 在 BDC 設計工具中按一下 [Contact] 實體,然後按兩下 [ReadList] 方法。

    Contact 服務程式碼檔案隨即在 [程式碼編輯器] 中開啟。

  5. 在 ContactService 類別中,使用下列程式碼取代 ReadList 方法。 這個程式碼會執行下列工作:

    • 從 AdventureWorks 資料庫的 [連絡人] 資料表擷取資料。

    • 將 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 網站隨即開啟,而 Visual Studio 則會將您的模型加入至「商務資料連接」服務。 請在 SharePoint 中建立會參考 Contact 實體的外部清單。 AdventureWorks 資料庫中的連絡人資料會顯示在清單中。

注意事項注意事項

在可以對方案進行偵錯之前,您可能需要修改 SharePoint 中的安全性設定。 如需詳細資訊,請參閱設計商務資料連接模型

若要測試專案

  1. 請按 F5

    SharePoint 網站隨即開啟。

  2. 在 [網站動作] 功能表上,按一下 [更多選項]。

  3. 按一下 [建立] 頁面中的 [外部清單],然後按一下 [建立]。

  4. 將自訂清單命名為 Contacts。

  5. 按一下 [外部內容類型] 欄位旁的瀏覽按鈕。

  6. 在 [外部內容類型選擇器] 對話方塊中,選取 [AdventureWorksContacts.BdcModel1.Contact],然後按一下 [建立]。

  7. 按一下 [建立] 建立連絡人清單。

    SharePoint 會建立外部清單, AdventureWorks 範例資料庫中的連絡人資料會在該清單中顯示。

  8. 若要測試特定搜尋方法,請按一下清單中的連絡人。

  9. 按一下 [功能區] 上的 [項目] 索引標籤。

  10. 按一下 [項目] 索引標籤中的 [檢視項目]。

    您選取之聯絡人的詳細資料會顯示在表單上。

後續步驟

您可以透過下列主題,進一步了解如何在 SharePoint 中設計 BDC 服務的模型:

請參閱

概念

BDC 模型設計工具概觀

其他資源

設計商務資料連接模型

建立商務資料連接模型

將商業資料整合至 SharePoint