WEB开发网
开发学院软件开发C语言 在C#代码中执行BCS外部内容类型方法 阅读

在C#代码中执行BCS外部内容类型方法

 2010-09-30 22:44:26 来源:WEB开发网   
核心提示:本文中我们将学习如何获取一个ECT的BCS方法集合,并且还要通过Business Connectivity Services对象模型执行其中的Finder方法和SpecificFinder方法,在C#代码中执行BCS外部内容类型方法,请先按照上一次文章中的步骤1到5创建一个简单的Visual WebPart,并添加所需

本文中我们将学习如何获取一个ECT的BCS方法集合。并且还要通过Business Connectivity Services对象模型执行其中的Finder方法和SpecificFinder方法。

请先按照上一次文章中的步骤1到5创建一个简单的Visual WebPart。并添加所需的引用和命名空间。

创建好后,按照下列步骤调用Business Connectivity Services对象模型来得到外部内容类型的方法。

1) 在你的可视化webpart的代码视图中添加下列using语句。该命名空间允许我们使用KeyValuePair类。

using System.Collections.Generic;

2)修改Page_Load方法,调用一个方法来执行外部内容类型的某个方法。

protected void Page_Load(object sender, EventArgs e)
{
    EnumrateAndExecuteECTMethods();
}

3)接下来,我们来定义该方法。需要做两件事:列出给定外部内容类型的所有方法;执行其中的finder方法和specific finder方法。

该方法的代码如下:

private void EnumrateAndExecuteECTMethods()
{
    //获取BDC服务引用
    BdcService service = SPFarm.Local.Servers.GetValue<BdcService>();
    //获取元数据目录
    IMetadataCatalog catalog = service.GetDatabaseBackedMetadataCatalog(SPServiceContext.Current);
    //通过相应的命名空间和名称获取实体
    IEntity entity = catalog.GetEntity("http://sp2010u", "产品");
    Literal1.Text = "<h1>" + entity.Name + " 的方法</h1> " + "<br/>";
    //为Finder和SpecificFinder方法的调用准备些变量
    int finderMethodRecordsCount = 0;
    string strName = "";
    //获取方法集合
    foreach (KeyValuePair<string,IMethod> method in entity.GetMethods())        
    {
        //显示方法名
        Literal1.Text += method.Key + ",";
        //显示当前方法的实例
        IMethodInstance methodInstance = method.Value.GetMethodInstances()[method.Key];
        if (methodInstance.MethodInstanceType == MethodInstanceType.Finder)
        { 
            //调用Finder方法
            IEntityInstanceEnumerator ieie = entity.FindFiltered(method
.Value.GetFilters(methodInstance), entity.GetLobSystem().GetLobSystemInstances()[0].Value);
            //返回结果计数
            while (ieie.MoveNext())
            {
                finderMethodRecordsCount++;
            }
        }
        //调用SpecificFinder方法
        if (methodInstance.MethodInstanceType == MethodInstanceType.SpecificFinder)
        { 
            //标识符的值
            int i = 1;
            //创建一个标识符
            Identity identity = new Identity(i);
            //调用SpecificFinder方法,获取该实体的实例
            IEntityInstance entInstance = entity.FindSpecific(identity, entity.GetLobSystem()
.GetLobSystemInstances()[0].Value);
            //显示SpecificFinder所返回的实体实例的Name字段值
            strName = entInstance["Name"].ToString();
        }
    }
    Literal1.Text += "<br/>Finder 方法获取的记录数 = " + finderMethodRecordsCount.ToString();
    Literal1.Text += "<br/>Specific Finder方法返回的实例的Name为 " + strName;
}

1 2 3  下一页

Tags:代码 执行 BCS

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接