在这一系列的上一篇文章中,我们在Microsoft Visual Studio 2010中创建了BCS模型,并为我们的Department实体定义了 Finder,Specific Finder和ID Enumerator方法。本文将继续扩展我们的BCS模型,看一看如何为Department实体定义Creator和Updater方法,让用户能够在Department实体中插入/编辑记录。
首先,开始创建我们的Creator方法。
1)右击Department实体的Methods一节,并选择“Add new Method”。
2)为方法起一个名字“AddDepartment”。
接下来,我们要为该Creator方法创建参数。你需要定义所有希望出现在“新建项目”对话框中的字段,作为Creator方法的输入参数。该方法还需要一个返回参数,而且应为一个结构体,其中包含了该Department实体的标识符类信息。
3)在Department实体中选中AddDepartment方法,然后在BDC Method Details面板中点击“<Add a Parameter>”
4)本例中我们将创建3个方向为“In”的参数,分别名为“Name”,“GroupName”,“DepartmentId”。
5)接下来我们需要修改每个参数的type descriptor属性。在BDC Explorer窗口中展开树状视图,找到这些参数的type descriptor。
这些type descriptor的属性设置为:
DepartmentID:
Name: DepartmentId
TypeName: System.Int16
Identifier: DepartmentId
GroupName:
Name: GroupName
TypeName: System.String
CreatorField:True
Name:
Name: Name
TypeName: System.String
CreatorField: True
6) 现在我们需要为AddDepartment方法定义返回参数。该返回参数应为一个描述Department实体的标识符的结构体。
打开DepartmentService.cs类,在Service类后面添加下列类:
7)在BDC Method Details面板中为AddDepartment方法创建一个方向为"Return"的参数,命名为“returnParameter”
8)打开BDC Explorer窗口,导航到AddDepartment方法的returnParameter参数,修改其type descriptor的属性。
Name:DepartmentSimple
TypeName:BdcModelProject1.BdcModel1.DepartmentSimple,BdcModel1
9)右击该DepartmentSimple类型描述器并选择“Add Type Descriptor” 。设置属性为:
Name:DepartmentId
TypeName:System.Int16
Identifier:DepartmentId
10) 参数和类型描述器定义好后如下图所示:
11)接下来,我们需要为AddDepartment方法创建一个方法实例。在BDC Method Details面板中,点击AddDepartment方法下的新建方法实例操作。按照下图所示设置其属性:
12)打开DepartmentService.cs文件,你会看到已经为你生成了一个AddDepartment方法。 用下列代码替换该方法的代码:
13)重新编译该项目并按“Ctrl+F5”键重新部署它。打开你的SharePoint站点并新建一个基于该BCS外部内容类型的外部列表。选择顶部的“项目”功能区,你会发现“新建项目”按钮现在变为可用状态。这样,就说明我们上面定义的Creator方法没问题,否则它是不可用状态。
14)点击“新建项目”,将会弹出一个表单供我们插入数据。在第5步我们定义了输入参数并且只在Name和GroupName上设置CreatorField=true,因此在该表单中我们仅看到Name和GroupName两个字段。如果你需要添加新的字段,那么你不但需要将其定义为输入参数,还要设置Creator Field 为true。对于Department表,DepartmentId是自增的主键,因此我们没有将其设置为Creator字段,但如果你的主键不是自增的,那么你也需要将其定义为一个Creator字段。
单击该表单中的保存按钮。
15) 结果如下。
现在,让我们来为我们的Department实体新建BCS Updater方法。
16)右击该Department实体的Methods一节,并选择“Add new Method”。
17)为新方法起一个名字“UpdateDepartment”。
我们需要为Updater方法创建输入参数。
18)在BDC Method Details面板中,点击UpdateDepartment方法下的添加参数操作,添加一个方向为“In”的参数。
19)在BDC Explorer窗口中,展开树状视图导航到该参数。选中该参数的type descriptor并修改其属性如下:
Name:Departmet
TypeName:BdcModelProject1.BdcModel1.Department,BdcModel1
20)右击Department类型描述器,为其添加两个类型描述器并如下设置属性:
DepartmentID:
Name:DepartmentId
TypeName:System.Int16
Identifier:DepartmentId
UpdaterField:True
GroupName:
Name:GroupName
TypeName:System.String
UpdaterField:True
Name:
Name:Name
TypeName:System.String
UpdaterField:True
注意:在本文中我们使用的Department表,其主键为自增的。为了保证updater方法正确执行,我们需要将上一篇中谈到的Specific Finder方法的返回值中的DepartmentId定义为只读。如下图所示:
21)至此,参数和类型描述器应如下图所示。如果你想要更新更多的字段,先将其添加为类型描述器,再设置其UpdaterField=true即可。
22)我们需要为UpdateDepartment方法创建一个方法实例。在BDC Method Details面板中,点击UpdateDepartment方法下的添加方法实例操作,添加一个方法实例并设置其方法实例类型为Updater。
23)打开Departmentservice.cs,找到自动生成的UpdateDepartment方法,用下面的代码替换其代码:
24)重新编译该项目,按“Ctrl+F5”键重新部署。打开你的SharePoint站点,由于我们在Department实体中添加了新的方法,因此需要删除前面创建的外部列表,并重新创建。 创建好后,随便选中一条记录,你会看到“编辑项目”按钮变为可用状态。由于我们为BCS模型正确的配置了updater方法,现在我们可以编辑记录了。
25)点击“编辑项目”,在弹出的表单中你将看到Name和GroupName两个字段,可供我们进行更新。修改一下名称,并点击保存。
26)更新后的结果。
希望本文对你有用。在接下来的文章中我们将一起探讨如何用Visual Studio 2010在两个外部内容类型之间创建BCS关联。
参考资料
bcs creator and updater methods for dot net assembly
Designing a Business Data Connectivity Model