使用.NET程序集作为Business Data Connectivity数据源(二)
歡迎回來!希望你已經通過跟隨上一次我們介紹的如何在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應用程序設置為一個搜索內容源?;氐焦芾矸諔贸绦蝽撁?#xff0c;點擊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
轉載于:https://www.cnblogs.com/Sunmoonfire/archive/2010/06/24/1762758.html
總結
以上是生活随笔為你收集整理的使用.NET程序集作为Business Data Connectivity数据源(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ArcGIS API for Silve
- 下一篇: [恢]hdu 1040