通过业务数据连接 (BDC) 服务,SharePoint 可以显示来自后端服务器应用程序、Web 服务和数据库的业务数据。
本演练演示如何为返回示例数据库中联系人相关信息的 BDC 服务创建模型。然后,使用此模型在 SharePoint 中创建外部列表。
本演练阐释了以下任务:
创建项目。
向模型中添加实体。
添加 Finder 方法。
添加特定的 Finder 方法。
测试项目。
系统必备
您需要以下组件来完成本演练:
支持的 Windows 和 SharePoint 版本。有关更多信息,请参见开发 SharePoint 解决方案的要求。
Visual Studio 专业版、Visual Studio 旗舰版 或 Visual Studio 高级专业版。
对 AdventureWorks 示例数据库的访问权限。有关如何安装 AdventureWorks 数据库的更多信息,请参见 SQL Server Sample Databases(SQL Server 示例数据库)。
创建一个包含 BDC 模型的项目
创建一个包含 BDC 模型的项目
在 Visual Studio 的菜单栏,选择 文件,新建,项目。
将打开**“新建项目”**对话框。
在 Visual C# 或 Visual Basic下,展开 SharePoint 节点,然后选择 2010 年 项目。
在 模板 窗格中,选择 SharePoint 2010 项目,将项目命名为" AdventureWorksTest ",然后选择 确定 按钮。
这将显示**“SharePoint 自定义向导”**。在此向导,可以指定用于调试该项目并设置解决方案的信任级别的站点。
选择 部署为场解决方案 选项按钮设置信任级别。
选择 完成 按钮接受默认的本地 SharePoint 网站。
在 解决方案资源管理器,选择 SharePoint 项目节点。
在菜单栏上,选择 项目,添加新项。
**“添加新项”**对话框打开。
在 模板 窗格中,选择 业务数据连接模型 (仅场解决方案),将项目命名为 AdventureWorksContacts,然后选择 添加 按钮。
向项目添加数据访问类
向项目添加数据访问类
在菜单栏上,依次选择 工具,连接到数据库。
**“添加连接”**对话框随即打开。
添加一个到 SQL Server AdventureWorks 示例数据库的连接。
有关更多信息,请参见添加/修改连接 (Microsoft SQL Server)。
在 解决方案资源管理器,选择项目节点。
在菜单栏上,选择 项目,添加新项。
在 已安装的模板 窗格中,选择 数据 节点。
在 模板 窗格中,选择 LINQ to SQL 类。
在 名称 框中,指定 AdventureWorks,然后选择 添加 按钮。
.dbml 文件添加到项目,因此,对象关系设计器 (O/R 设计器) 打开。
在菜单栏上,依次选择 查看,服务器资源管理器。
在**“服务器资源管理器”中,展开代表 AdventureWorks 示例数据库的节点,然后展开“表”**节点。
添加到 O/R 设计器上的 联系人 (人员) 表。
一个实体类将创建并显示在设计图面上。该实体类的属性映射到“Contact(Person)”表的列。
从 BDC 模型中删除默认实体
**“业务数据连接模型”**项目向模型中添加一个名为 Entity1 的默认实体。移除此实体。然后添加一个新的实体。以空模型作为入手点可以减少完成本演练所需的步骤数。
从模型中移除默认实体
在 解决方案资源管理器,展开 BdcModel1 节点,然后打开 BdcModel1.bdcm 文件。
业务数据连接模型文件将在 BDC 设计器中打开。
在设计器中,打开 Entity1的快捷菜单,然后选择 删除。
在 解决方案资源管理器,打开 Entity1.vb (在 Visual Basic 中) 或 Entity1.cs 的快捷菜单 (在 c# 中),然后选择 删除。
打开 Entity1Service.vb (在 Visual Basic 中) 或 Entity1Service.cs 的快捷菜单 (在 c# 中),然后选择 删除。
向模型添加实体
向模型添加实体。可以从 BDC 设计器上的 Visual Studio 工具箱 添加实体。
向模型添加实体
在菜单栏上,依次选择 查看,工具箱。
在 工具箱的 BusinessDataConnectivity 选项,请添加到 BDC 设计器上的 实体。
新实体随即显示在该设计器中。Visual Studio 添加一个名为 EntityService.vb 的文件 (在 Visual Basic 中) 或 EntityService.cs (在 c# 中) 到项目。
在菜单栏上,依次选择 查看,属性,窗口。
在 属性 窗口中,将 名称 属性值为"联系人"。
在设计器中,打开该实体的快捷菜单,选择 添加,然后选择 标识符。
新标识符随即显示在该实体中。
在**“属性”**窗口中,将标识符的名称更改为“ContactID”。
在 类型名称 列表中,选择 System.Int32。
添加特定的 Finder 方法
若要启用 BDC 服务以显示特定联系人,必须添加特定的 Finder 方法。当用户选择列表中的项然后在功能区的 查看项目 按钮时,BDC 服务特定的 finder 方法。
使用**“BDC 方法详细信息”**窗口可以向联系人实体添加特定的 Finder 方法。若要返回特定实体,请向该方法添加代码。
添加特定的 Finder 方法
在 BDC 设计器中,选择 联系人 实体。
在菜单栏上,依次选择 查看,其他窗口,BDC 方法详细信息。
BDC 方法详细信息"窗口打开。
在 添加方法 列表中,选择 创建特定的 Finder 方法。
Visual Studio 将以下元素添加到模型中。这些元素将显示在**“BDC 方法详细信息”**窗口中。
一个名为“ReadItem”的方法。
该方法的输入参数。
该方法的返回参数。
每个参数的类型描述符。
该方法的一个方法实例。
在 BDC 方法详细信息 窗口,请打开的 联系人 类型描述符显示的列表,然后选择 编辑。
BDC 资源管理器 打开并提供该模型的分层视图。
在 属性 窗口,请在 typename 属性旁边打开列表中,选择 当前项目 选项卡,然后选择 联系人 属性。
在 BDC 资源管理器,打开 联系人的快捷菜单,然后选择 添加类型描述符。
名为 TypeDescriptor1 的新类型描述符显示 BDC 资源管理器。
在 属性 窗口中,将 名称 属性值设置为 ContactID。
在 typename 属性旁边打开列表,然后选择 Int32。
在 标识符 属性旁边打开列表,然后选择 ContactID。
重复步骤 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
在 BDC 设计器中,联系人 实体上,打开 ReadItem 方法。
联系人服务代码文件随即在代码编辑器中打开。
在 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; }
添加 Finder 方法
若要启用 BDC 服务以在列表中显示联系人,必须添加 Finder 方法。使用**“BDC 方法详细信息”**窗口可以向联系人实体添加 Finder 方法。若要向 BDC 服务返回实体集合,请向该方法添加代码。
添加 Finder 方法
在 BDC 设计器中,选择 联系人 实体。
在 BDC 方法详细信息 窗口中,ReadItem 折叠节点。
在 添加方法 列表中 ReadList 方法下,选择 创建 Finder 方法。
Visual Studio 将添加一个方法、一个返回参数和一个类型描述符。
在 BDC 设计器中,联系人 实体上,打开 ReadList 方法。
联系人服务的代码文件随即在代码编辑器中打开。
在 ContactService 类中,用以下代码替换 ReadList 方法。这段代码执行下列任务:
从 AdventureWorks 数据库的联系人表中检索数据。
将联系人实体列表返回到 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 中的安全性设置,然后才能调试解决方案。有关更多信息,请参见设计业务数据连接模型。 |
测试项目
选择 F5 键。
SharePoint 网站将打开。
在 网站操作 菜单中,选择 更多选项 命令。
在 创建 页上,选择 外部列表 模板,然后选择 创建 按钮。
将该自定义列表命名为“联系人”。
在 外部内容类型 字段旁选择浏览"按钮。
在 外部内容类型选取器 对话框中,选择 AdventureWorksContacts.BdcModel1.Contact 项目,然后选择 创建 按钮。
SharePoint 创建包含 AdventureWorks 示例数据库中的联系人的外部列表。
若要测试特定的 finder 方法,请在列表中选择某一联系人。
在功能区上,选择 项 选项卡,然后选择 查看项目 命令。
所选联系人的详细信息显示在窗体。
后续步骤
您可以通过以下主题了解有关如何在 SharePoint 中为 BDC 服务设计模型的更多内容: