使用.NET程式集作為Business Data Connectivity資料來源(二)

來源:互聯網
上載者:User

歡迎回來!希望你已經通過跟隨上一次我們介紹的如何在Visual Studio 2010中構建業務資料連線服務模型中的步驟成功建立了你自己的Entity,並已經部署到SharePoint上。

本次我們將繼續擴充我們的BCS模型。我們將在 department實體上建立SpecificFinder和IdEnumerator方法。首先我們來設定SpecificFinder...

 

1、右擊我們的department實體的Methods一節 ,選擇Add new Method。將方法名命名為GetDepartmentById。

2、開啟我們的DepartmentService.cs,你會看到一個新的方法已經為我們建立出來。修改該方法的聲明以便其可以接收一個參數,並返回一個Department對象。 

public static Department GetDepartmentById(Int16 departmentId)

 

3、在你的方法裡添加如下代碼,來替換預設的Not Implemented Exception:

 代碼

DepartmentDataContext db = new DepartmentDataContext


("server=localhost;database=adventureworks2000;uid=***;pwd=***");

var dbDepartment = db.Departments.SingleOrDefault(d => d.DepartmentID == departmentId);
return new Department

{

    DepartmentId = dbDepartment.DepartmentID,

    Name = dbDepartment.Name,

    GroupName = dbDepartment.GroupName

};

我們需要再多做一點工作,因為我們希望返回我們自己的Department類,而不是由LINQ 2 SQL產生的那個。原因在第一篇中已經說明,個人認為這是一條正確的路。

4、接下來我們需要修改一下我們的BCS模型。返回到我們的BCS模型頁面,並點擊GetDepartmentById方法。在BCS方法詳細資料面板中選擇add a parameter。選中你的新參數,通過屬性面板修改其名稱為departmentId。然後點擊它下面的Type Descriptor,設定如下的值:

 

Name : departmentId

Type Name : System.Int16

Identifier : DepartmentId

 

 

5、然後我們來建立返回參數。回到BDC方法詳細資料面板,在GetDepartmentById方法下選擇建立另一個新的參數。

 

6、在BDC Explorer中選中新參數 ,修改名稱為Department,參數方向為Return。

 

7、現在是體現BDC Explorer優越性的時候了。展開我們的Department實體的GetDepartments方法。右擊Department類型描述器並選擇Copy。接著,右擊GetDepartmentById方法的Department參數選Paste。

 

這時會彈出對話方塊詢問是否覆蓋已有的Type Descriptor——點"yes"。這時你會發現Department類型描述器和所有欄位的類型描述器都複製過來了。這樣就減少了一些我們的手動建立工作。 

 

結果:

需要注意的是,如果所複製的Type Descriptor帶有一些錯誤,則這些錯誤也會複製到其他方法。這也就是為什麼最好先構建

Finder方法進行測試無誤後,再進行Type Descirptor的複製和粘貼。

 

8、現在我們只需要建立一個方法執行個體就可以了。返回BDC方法詳細資料面板,在GetDepartmentById方法下選擇Add a Method Instance。設定其屬性值為:

 

Type : SpecificFinder

Default : True

Default Display Name : Single Department

Return Parameter Name : Department

Return Type Descriptor : Department

9、在測試和部署前,我們需要清除我們的DepartmentService.cs類中的多餘代碼。

 

BCS設計器希望你在開始寫代碼前,先定義你的方法,參數和類型描述器。這也正是為什麼在我們編輯完方法的返回對象和輸

入參數後會重建一段新的方法聲明。我更傾向於先寫代碼然後構建BCS模型。如果你和我的步驟一樣,一定要記住要檢查

Service類,清除沒用的方法代碼。

 

10、清除完後,直接F5編譯部署該WSP到SharePoint.

 

你可以通過添加並配置一個業務資料項目WebPart來測試Specific Finder方法。或者也可以建立一個外表列表並點擊某一行彈出查看錶單來驗證。

 

11、我們的Specific Finder BCS方法工作正常!現在讓我們返回Visual Studio,來配置我們的IdEnumerator方法。右擊我們的Department實體的Methods一節,添加一個名為GetDepartmentIds的方法。

12、進入DepartmentService.cs類,修改GetDepartmentIds方法的聲明為:

public static IEnumerable<short> GetDepartmentIds()

 

13、記住,我們的IdEnumerator方法只支援返回欄位中的主鍵的值。SharePoint會以此來建立索引並進行耙梳。該方法的代碼很簡單:

DepartmentDataContext db = new DepartmentDataContext


("server=localhost;database=adventureworks2000;uid=***;pwd=***");
return from d in db.Departments

      select d.DepartmentID;

 

14、現在開始BCS模型的構建,以便反映出所返回的資料。切回到BCS模型視圖。選擇GetDepartmentIds方法,在BDC詳細資料面板裡建立一個參數。

 

15、在BDC Explorer裡展開樹,選中剛剛建立的參數。在屬性面板裡修改其方向為Return。

 

16、選擇我們的參數下的parameterTypeDescriptor,設定其值:

 

Name : DepartmentIds

Type Name : System.Collections.Generic.IEnumerable`1[[System.Int16]]

IsCollection : True

 

17、右擊樹中的DepartmentIds類型描述器結點,選擇Add Type Descriptor。設定該類型描述器的屬性為:

Name : DepartmentId

Type Name : System.Int16

Identifier : DepartmentId

18、最後,為我們的方法添加一個MethodInstance。在BDC方法詳細資料面板中點擊Add a Method Instance。選中該方法執行個體並設定其屬性值:

Type : IdEnumerator

Default : True

Return Parameter Name : parameter

Return Type Descriptor : DepartmentIds

記得要清除DepartmentService.cs中我們建模過程中建立的GetDepartmentIds方法。

19、要將我們的LobSystemInstance做成一個可供SharePoint 2010索引器耙梳的應用程式,還需要為其設定一個新屬性。這個屬性名稱為ShowInSearchUI。

在BDC Explorer中展開BCS模型,找到LobSystemInstance結點。

20、在屬性面板裡,設定一個custom property,名為ShowInSearchUI,類型為System.String。該屬性實際上不需要值,只需要存在就可以了。

21、就這麼多,現在我們可以按F5把我們的模型打包成WSP並部署到SharePoint了。這裡我們還有些SharePoint UI裡特殊步驟,用於在搜尋結果中展現我們的Departments類型的資料。

22、在原先的BDC(Business Data Catalog)裡,你的實體的設定檔頁面面是自動建立的。而使用上面步驟在BCS中卻不會自動建立設定檔頁面。因此我們需要一步手工操作來進行建立。開啟SharePoint 2010管理中心,點擊管理服務應用程式。在服務應用程式頁中點擊Business Data Connectivity Service連結到其管理頁面。

23、在功能區上,點擊編輯標籤,點擊配置按鈕。彈出的表單,需要我們輸入一個設定檔頁面宿主URL。正如頁面中解釋的那樣,最好單獨建立一個網站來宿主這些設定檔頁面,但此處我們就直接輸入相同的Url,指向我們的SharePoint網站,對於我來說是http://sp2010u。

點擊確定關閉該表單。

24、現在,我們可以在我們的外部內容類型上建立設定檔頁面了。滑鼠移至上方在我們的Department ECT上,在下拉式功能表中選擇“建立/升級設定檔頁面”。

在彈出的對話方塊中一路點確定。現在我們的設定檔頁面就建立到23步中指定的宿主網站中了。

25、接下來我們要檢查一下我們的實體是不是可以被耙梳。點擊Department ECT,檢查其中的“可耙梳”屬性值為“是”。

26、現在,我們需要將我們的BCS應用程式設定為一個搜尋內容來源。回到管理服務應用程式頁面,點擊Search Service Application連結。

27、在左手的導覽功能表中點擊“內容來源”連結,然後再接下來的頁面上點擊建立內容來源連結。

28、為新內容來源起一個名字,並選擇其類型為業務部門資料(Line of Business Data)。點選後介面會重新整理,然後顯示下面一節來展現外部資料源。選擇你要進行耙梳的BCS應用系統,這裡是BdcModel1

注意:如果你的應用系統沒有出現在這裡,那麼你需要檢查一下ShowInSearchUI有沒有被添加到屬性集中。(可以使用原始碼編輯器開啟模型檔案,而不是在預設的模型編輯介面。然後找找看LobSystemInstance結點下的屬性集裡有沒有ShowInSearchUI)。

 

29、如果你願意可以設定一下耙梳計劃。 最後選中“對該內容來源啟動完全耙梳”,並點擊確定。

 

30、當耙梳完成後,我們來檢查一下我們的BCS內容來源的編目記錄。 

你應該可以看到有18個成功的條目——每個部門對應一條。 

 

31、如果你已經有一個工作群組網站作為網站集合根網站的話 ,你需要建立一個搜尋中心網站。建立好後,進入搜尋中心網站,搜尋一個關鍵詞“engineering",這時你會看到藉助Department ECT我們得到Engineering部門的返回結果。

32、你可以將該搜尋中心掛接到你的小組網站上。返回工作群組網站,然後點擊

 

網站操作->網站設定-> 搜尋設定

 

你可以把搜尋中心的URL貼到這裡,以便使用其結果頁。

Wow——為自己喝彩吧! 作為一個系列,接下來,我們還將介紹建立關聯的步驟。

 

參考資料

 BCS Model in Visual Studio 2010 – SpecificFinder and IdEnumerator

Searching External Data in SharePoint 2010 Using Business Connectivity Services

BDC .NET Assembly Connector: Tame SharePoint Search to search your .NET BDC Entity 

Search-Specific Properties in BDC Model Files

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.