在 SharePoint 2013 中使用 OData 與 ECT

英文原文已於 2012 年 12 月 7 日星期五發佈

SharePoint 2013 BCS 世界中一些不錯的增強功能之一,就是 SharePoint 現在可以在 BDC 應用程式中取用 OData。但是,最近當我進行此程序時,碰到了一點問題,所以我想我應該在這裡說明一下,免得有人也和我一樣陷入困境。首先,我建議從下列文件開始,以引導您為 OData 建立應用程式的基礎概念:https://msdn.microsoft.com/zh-tw/library/sharepoint/jj163967.aspx。重點是,您無法在 SharePoint Designer 建立一個連線至 OData 來源的 BDC 應用程式;若要那麼做的話,您必須使用 Visual Studio 之類的工具來建立外部內容類型 (ECT)。

我在上個段落所所連結的文件,可引導您逐步完成建立 ECT 的程序。緊接著說明在 SharePoint App 中使用那些 ECT 的方式,並透過這種方式進行部署,但不會說明若要將其新增至 BDC 目錄中以供多個網站集合使用,您該如何處理。這也是我寫本文的原因。首先,您必須了解,當您按照以上文章所述逐步完成所有程序時,將會為每個實體 (如表格) 建立一個 ECT。了解這點很重要,因為實體會在該 ECT 檔案中使用相同的名稱,而這就會讓您無法將多個檔案上傳至 BDC 目錄中。若要在 SharePoint 中使用這些實體的話,您必須按照下列步驟進行:

  1. 在 Visual Studio 中,請在 ECT 檔案上按一下右鍵,並選取 [開啟檔案...],然後選取 [XML (文字) 編輯器]。在文件頂端的 [模型] 元素中,您將會看見 Name 屬性。這個值必須是您上傳到 BDC 的所有 ECT 之間唯一的值,所以您應該將每個值變更為該實體的描述性值,如「客戶表單」。
  2. 您可以變更實體元素的命名空間 (該元素約佔文件篇幅 20 行左右),但您不需這麼做。我將我的元素變更為與模型名稱一致,但這並非必要,因為它只是我偏好的風格。
  3. 在完成變更並儲存檔案後,您就可以將 .ect 檔案直接上傳至 BDC。只要使用預設的選項 (這是個模型),然後按一下 [確認] 按鈕,就大功告成了。
  4. 在您匯入模型後,請別忘了授與使用者相關的權限,以供他們使用。否則,一切就毫無意義了。

最後,還有一件事值得注意,您不能立即在 SQL 資料庫、Azure 資料表儲存體等等上取得 OData 中繼資料端點。幸好,將它新增到 SQL 相對較容易。簡而言之,您必須:

  1. 建立新的空白 ASP.NET Web 應用程式
  2. 新增 ADO.NET 實體資料模型
  3. 新增 WCF 資料服務
  4. 在您的 WCF 資料服務中,您必須在類別建構函式設定類型。一開始可能會有些令人困惑。您必須尋找一個名字類似 myDataConnection.Context.tt 的檔案 (該檔案應該位於 App_Code 資料夾中)。如果展開該資料夾,您應該可在下方看到 myDataConnection.Context.cs 類別。如果開啟該類別,您將會看到 WCF 資料服務所需的兩項資訊:1) 類別名稱,您將使用它作為 WCF 資料服務類別建構函式的類型。2) 其所支援的實體的名稱,而這些實體是透過 get; set; 屬性來進行實作。您也會需要 WCF 資料服務中的實體名稱,因為您至少必須替每個要開放的實體建立 "SetEntitySetAccessRules" 。當您新增 WCF 資料服務時,註解中將會提供更詳細的說明。我只是想告訴您,當您建立那些規則其中一項時,可以在哪些地方找到實體名稱。

 

這是翻譯後的部落格文章。英文原文請參閱 Using OData and ECTs in SharePoint 2013