欢迎回来!希望你已经通过跟随上一次我们介绍的如何在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

转载于:https://www.cnblogs.com/Sunmoonfire/archive/2010/06/24/1762758.html

使用.NET程序集作为Business Data Connectivity数据源(二)相关推荐

  1. 找不到文件或程序集名称System.Data.SqlServerCe...

    开发平台 :vs2008 开发语言 :vb.net 应用程序运行平台 :WINCE5.0,.net框架3.5版本 应用程序主要部分 :SQLce数据库.串口.Socket通信接口等,其中SQLce数据 ...

  2. Android开发教程 - 使用Data Binding(二)集成与配置

    本系列目录 使用Data Binding(一)介绍 使用Data Binding(二)集成与配置 使用Data Binding(三)在Activity中的使用 使用Data Binding(四)在Fr ...

  3. 【ABAP】Cross client master/business data transfer guide(ALE I Doc)

    在项目实施中经常遇到这样的问题,有2个client 800和810,需要把800的配置和一部分业务数据拷贝到810.配置可以用SCC1来实现,业务数据导入办法也多种多样,当然比较省心的就是用ALE了. ...

  4. kotlin使用spring data redis(二)

    2019独角兽企业重金招聘Python工程师标准>>> 自定义序列化器 1.标准json序列化器,时间类型禁用时间戳 import com.fasterxml.jackson.cor ...

  5. MHT: Basic Methods for Data Association(二)Track Score Function

    文章目录 6.2 Track Score Function 6.2.1 Likelihood Ratio Development 6.2.2 Track Score Initation(跟踪分数启动) ...

  6. Data Visualization(二)

    三维柱状图属性设置 1.预设视角 3种三维图表的父类QAbstract3DGraph有一个函数scene()可以获得图表的场景,是一个Q3DScene类.Q3DScene是三维图的场景,包含一个相机( ...

  7. Sharepoin学习笔记—架构系列--08 Sharepoint的数据模型(DataModel)、数据管理(Data Management)与查询(Query System)

    Sharepoint Foundation中的首要数据结构就是列表(List), 每个List属于某种List Type,与此类似,每个列表中的列(Column)属于某种FieldType,而每一条列 ...

  8. sharepoint bcs (bussiness connectivity services)

    sharepoint bcs  在2010 版本中是提供2010 与外部数据连接的. BCS全名Business Connectivity Services,可以把它看成SharePoint 2007 ...

  9. SharePoint debug - Unable to render the data. If the problem persists, contact your web server admin

    使用SharePoint Designer创建了一个外部内容类型external content type,连接SQL Server数据库中的一个表.然后在管理中心配置了权限,再使用这个externa ...

最新文章

  1. 正则表达式,VI,SED及shell编程2010-12-05
  2. spark 在启动的时候出现JAVA_HOME not set
  3. 基于 xilinx vivado 的PCIE ip核设置与例程代码详解
  4. 抓包写代码模拟怎么减少重复劳动
  5. mysql 主主模式优缺点_mysql主主同步模式
  6. oracle存储过程的写法
  7. 使用Angular2建立项目
  8. Decision Tree决策树练习题
  9. 怎样在MyEclipse中连接Oracle数据库
  10. ajax异步延迟加载图片,lazyload.JS实现图片异步延迟加载
  11. 定时器cron表达式详解
  12. requests 模块获取免费的代理并检测代理 IP 是否有效!
  13. MyEclipse2014用外部的浏览器运行web项目
  14. 自制适合城市家庭的鱼菜共生系统
  15. [渝粤题库]西北工业大学电工与电子技术
  16. datax安装记录备忘
  17. 关于神经网络中Backbone,Neck,Bottleneck,Head的理解
  18. ATJ2157ATJ2127音乐按文件名拼音排序---标案是按内码进行排序
  19. 计算机考研面试自我介绍范文英语,研究生面试自我介绍英文范文
  20. Linux系统-【磁盘管理】lsblk命令 – 查看系统的磁盘使用情况

热门文章

  1. (stl排序+检索)大理石在哪
  2. mysql离散查询_如何写出高性能的MySQL查询
  3. android+read_logs这权限有什么用,READ_LOGS是正常或危险的Android权限吗?
  4. 智能家居中语音识别算法研究_语音识别研究获进展
  5. css动画改变高度有过渡效果,css3-形变、过渡、动画
  6. mybatis返回map键值对_mybatis返回map key怎么指定
  7. php redis 投票_高性能Redis服务架构分析与搭建
  8. 外链引入css有哪些方式_快速收录的外链操作技巧
  9. Java 递归创建目录
  10. mxnet深度学习(NDArray)