• 使用.NET程序集作为Business Data Connectivity数据源(三)


     在这一系列的上一篇文章中,我们在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类后面添加下列类: 

    public class DepartmentSimple
    {
        
    public short DepartmentId
        {
            
    get;
            
    set;
        }
    }

     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方法。 用下列代码替换该方法的代码:

    public static DepartmentSimple AddDepartment(string Name, string GroupName, short DepartmentId)
    {
        
    DepartmentDataContext db = new DepartmentDataContext("server=localhost;database=adventureworks;uid=***;pwd=***");
        BdcModelProject1.Department createdEntity = new BdcModelProject1.Department
        {
            DepartmentID = DepartmentId,
            Name = Name,
            GroupName = GroupName,
            ModifiedDate = DateTime.Now
        };
        db.Departments.InsertOnSubmit(createdEntity);
        db.SubmitChanges();
        
    DepartmentSimple IdentifiersStruct = new DepartmentSimple
        {
            DepartmentId = DepartmentId,
        };
        
    return IdentifiersStruct;
    }

    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方法,用下面的代码替换其代码: 

    public static void UpdateDepartment(Department parameter)
    {
        
    DepartmentDataContext db = new DepartmentDataContext("server=localhost;database=adventureworks2000;uid=***;pwd=***");
        BdcModelProject1.Department updatedEntity = (from entity in db.Departments
                                     
    where entity.DepartmentID == parameter.DepartmentId
                                    
    select entity).FirstOrDefault<BdcModelProject1.Department>();
        updatedEntity.Name = parameter.Name;
        updatedEntity.GroupName = parameter.GroupName;
        db.SubmitChanges();
    }

    24)重新编译该项目,按“Ctrl+F5”键重新部署。打开你的SharePoint站点,由于我们在Department实体中添加了新的方法,因此需要删除前面创建的外部列表,并重新创建。 创建好后,随便选中一条记录,你会看到“编辑项目”按钮变为可用状态。由于我们为BCS模型正确的配置了updater方法,现在我们可以编辑记录了。 

    25)点击“编辑项目”,在弹出的表单中你将看到Name和GroupName两个字段,可供我们进行更新。修改一下名称,并点击保存。

    26)更新后的结果。

    希望本文对你有用。在接下来的文章中我们将一起探讨如何用Visual Studio 2010在两个外部内容类型之间创建BCS关联。

    参考资料

    bcs creator and updater methods for dot net assembly 

    How to: Add a Creator Method

    Designing a Business Data Connectivity Model


  • 相关阅读:
    天正暖通2013版安装包附带注册机下载
    你妈安好
    利用FLASH和XML做炫酷图片相册
    空调冷凝水管径选用原则
    知足常乐
    曾经的真三国无双
    Deep Exploration安装破解汉化
    Revit模型文件输出为3D PDF格式的方法
    Adobe Acrobat 9 Pro Extended简体中文版安装破解汉化教程
    Keep reading
  • 原文地址:https://www.cnblogs.com/Sunmoonfire/p/1767779.html
Copyright © 2020-2023  润新知