在我们之前的博文中,我们学习了如何用Visual Studio 2010为AdventureWork2000数据库的Department表创建 BCS模型和定义BCS方法( Finder, Specific Finder,Id Enumerator ,Creator和Updater)。
本文我们将学习如何在Visual Studio 2010中配置两个BCS外部内容类型间的关联。在前面的文章中,我们已经用过了Department表,因此Employee表就成了第二个外部内容类型的最佳选择,我们将创建部门与雇员间的关联。首先,我们需要建立Employee BCS外部内容类型。因此请打开你先前用过的Department外部内容类型的项目,并使用完全相同的步骤创建Employee外部内容类型。你不需要定义所有的方法,只要有Finder和Specific Finder就足够了。
步骤
1)请确保你已经为Employee外部内容类型定义好Finder和SpecificFinder方法。你可以使用BCS业务数据列表Web部件和BCS业务数据列表项Web部件来检查是否可以正确地检索到Employee数据。当前状态下在Visual Studio 2010里的BCS模型图应该如下图所示:
Employee表包含很多列,在本例中,我们只使用EmployeeID, FirstName, LastName, Title, DepartmentId。
2)在Visual Studio 2010里查看工具箱,然后点击 “Association”。
3)要建立Department与Employee之间的关联,点击完工具箱的关联图标后,先点界面上Department实体再点Employee实体。
4)弹出一个新的对话框,在这里你可以配置关联方法。
5) 在第一部分 - Identifier Mapping,你可以从源实体映射标识符到目标实体;而在第二部分 - Association Methods,您可以添加/删除AssociationNavigator方法。在我们的例子中,我们将删除EmployeeToDepartment方法,只留下DepartmentToEmployee方法。
6)按“确定”按钮,将创建Department(来源)和Employee(目标)外部内容类型的关联。
7)接下来,我们需要编写关联方法的C#代码。打开DepartmentService.cs文件,你会看到自动生成的DepartmentToEmployee方法。用下面的C#代码方法替换其内容。
public static IEnumerable<Employee> DepartmentToEmployee(short departmentId)
{
EmployeeDataContext db = new EmployeeDataContext("server=localhost;database=adventureworks2000;uid=***;pwd=***");
IEnumerable<Employee> records = from record in db.Employees
where record.DepartmentID == departmentId
select new Employee
{
EmployeeID = record.EmployeeID,
FirstName = record.FirstName,
LastName = record.LastName,
Title = record.Title,
DepartmentID = (Int16)record.DepartmentID
};
return records;
}
{
EmployeeDataContext db = new EmployeeDataContext("server=localhost;database=adventureworks2000;uid=***;pwd=***");
IEnumerable<Employee> records = from record in db.Employees
where record.DepartmentID == departmentId
select new Employee
{
EmployeeID = record.EmployeeID,
FirstName = record.FirstName,
LastName = record.LastName,
Title = record.Title,
DepartmentID = (Int16)record.DepartmentID
};
return records;
}
8)按Ctrl + F5键重新编译和部署该解决方案。打开SharePoint站点,进入页面的编辑模式。在页面上拖放一个“业务数据列表”Web部件和一个“与业务数据相关的列表”Web部件。
9)在业务数据列表WebPart中选择Department实体,在相关WebPart中选择Employee实体。
10)我们需要将这两个WebPart连接起来。在Department WebPart处于编辑模式时,通过WebPart菜单来添加一个连接。
11)完成连接后,你可以点击Department列表每行头部出现的图标,将调用关联方法,在相关里面显示相应部门的雇员记录。
参考资料