上次修改时间: 2010年5月6日
适用范围: SharePoint Server 2010
本文内容
说明
先决条件
使用此示例
说明
以下代码示例演示如何通过在服务器上使用 BDC 运行时对象模型,以编程方式执行无外键关联的 AssociationNavigator 方法实例。
先决条件
Microsoft SharePoint Server 2010 或 Microsoft SharePoint Foundation 2010 位于服务器上。
Microsoft .NET Framework 3.5 和 Microsoft Visual Studio 位于客户端计算机上。
BDC 元数据存储中至少已注册一个外部内容类型。
使用此示例
启动 Visual Studio 并创建一个 C# 控制台应用程序项目。在创建此项目时,请选择".NET Framework 3.5"。
从"视图"菜单中,单击"属性页"以显示项目属性。
在"生成"选项卡中,为"目标平台"选择"任何 CPU"。
关闭项目属性窗口。
在"解决方案资源管理器"中的"引用"下,删除 System 和 System.Core 之外的所有项目引用。
将以下引用添加到项目中:
Microsoft.BusinessData
Microsoft.SharePoint
Microsoft.SharePoint.BusinessData
将 Program.cs 中自动生成的代码替换为此过程结束时列出的代码。
将实体名称、LobSystem 名称和 LobSystemInstance 名称的值替换为有效值。
保存项目。
编译并运行项目。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.BusinessData.Runtime;
using Microsoft.BusinessData.MetadataModel;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;
using Microsoft.SharePoint.BusinessData.SharedService;
namespace SDKSamples
{
    class Associate
    {
        //FKLessAssociationNavigator.
        public static void FKLessAssociationNavigatorSample()
        {
            BdcService service = 
                SPFarm.Local.Services.GetValue<BdcService>(String.Empty);
            IMetadataCatalog catalog = 
                service.GetDatabaseBackedMetadataCatalog(
                SPServiceContext.Current);
            // Get entities.
            IEntity salesReasonEntity = catalog.GetEntity(
                "AdventureWorks", "SalesReason");
            IEntity salesOrderEntity = catalog.GetEntity(
                "AdventureWorks", "SalesOrder");
            //Get LOB System instance.
            ILobSystemInstance lobSystemInstance = 
                salesOrderEntity.GetLobSystem().GetLobSystemInstances()
                ["AdventureWorks"];
            // Get the source entity instance with ID 5 
            // to use to navigate the association.
            IEntityInstance salesReasonInstance = 
                salesReasonEntity.FindSpecific(new Identity(5), 
                "Read Item", lobSystemInstance, OperationMode.Online);
            // Get the association.
            IAssociation association = 
                (IAssociation)salesOrderEntity.GetMethodInstance(
                "Sales Order by Reason", 
                MethodInstanceType.AssociationNavigator);
            // Create a collection with the entity instance.
            EntityInstanceCollection sourceInstances = 
                new EntityInstanceCollection(1);
            sourceInstances.Add(salesReasonInstance);
            IEntityInstanceEnumerator associatedInstances = null;
            try
            {
                // Navigate the association.
                associatedInstances = 
                    salesOrderEntity.FindAssociated(
                    sourceInstances, association, 
                    lobSystemInstance, OperationMode.Online);
                // List all sales orders for customer 1.
                Debug.WriteLine(
                    "Listing customer's 1 sales orders ID and dates:");
                while (associatedInstances.MoveNext())
                {
                    Debug.WriteLine(
                        String.Format(
                        "Id: {0}, OrderDate: {1}", 
                        associatedInstances.Current["SalesOrderID"], 
                        associatedInstances.Current["OrderDate"]));
                }
            }
            finally
            {
                // Ensure the enumerator is closed.
                if (associatedInstances != null)
                {
                    associatedInstances.Close();
                }
            }
        }
    }
}
请参阅
引用
GetDatabaseBackedMetadataCatalog(SPServiceContext)
FindSpecific(Identity, String, ILobSystemInstance, OperationMode)
GetMethodInstance(String, MethodInstanceType)
FindAssociated(EntityInstanceCollection, IAssociation, ILobSystemInstance, OperationMode)