代码段:执行外部内容类型的 BulkAssociationNavigator 方法实例
上次修改时间: 2010年5月6日
适用范围: SharePoint Server 2010
本文内容
说明
先决条件
使用此示例
说明
以下代码示例演示如何使用服务器上的 BDC 运行时对象模型,以编程方式执行外部内容类型的 BulkAssociationNavigator 方法实例。
先决条件
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.MetadataModel;
using Microsoft.BusinessData.MetadataModel.Collections;
using Microsoft.BusinessData.Runtime;
using System.Diagnostics;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;
using Microsoft.SharePoint.BusinessData.SharedService;
namespace SDKSamples
{
class Methods
{
//Foreign Key Based BulkAssociationNavigator.
public static void BulkAssociationNavigatorSample()
{
BdcService service =
SPFarm.Local.Services.GetValue<BdcService>
(String.Empty);
IMetadataCatalog catalog =
service.GetDatabaseBackedMetadataCatalog(
SPServiceContext.Current);
// Get entities.
IEntity customerEntity =
catalog.GetEntity("AdventureWorks", "Customer");
IEntity salesOrderEntity =
catalog.GetEntity("AdventureWorks", "SalesOrder");
//Get LOB System instance.
ILobSystemInstance lobSystemInstance =
salesOrderEntity.GetLobSystem().
GetLobSystemInstances()["AdventureWorks"];
// Get the source entity instance with ID 1 to use
// to navigate the association.
IEntityInstance customer1 =
customerEntity.FindSpecific(
new Identity(1),
"Read Item",
lobSystemInstance,
OperationMode.Offline);
IEntityInstance customer2 =
customerEntity.FindSpecific(
new Identity(2),
"Read Item",
lobSystemInstance,
OperationMode.Offline);
// Get the association.
IAssociation association =
(IAssociation)salesOrderEntity.GetMethodInstance(
"Bulk Customers Sales Orders",
MethodInstanceType.BulkAssociationNavigator);
// Create a collection with the entity instance.
EntityInstanceCollection sourceInstances1 =
new EntityInstanceCollection(1);
sourceInstances1.Add(customer1);
EntityInstanceCollection sourceInstances2 =
new EntityInstanceCollection(1);
sourceInstances2.Add(customer2);
IList<EntityInstanceCollection> entityInstanceCollectionList =
new List<EntityInstanceCollection>(2);
entityInstanceCollectionList.Add(sourceInstances1);
entityInstanceCollectionList.Add(sourceInstances2);
IEntityInstanceEnumerator associatedInstances = null;
try
{
// Navigate the association.
associatedInstances =
salesOrderEntity.FindAssociatedMultiple(
entityInstanceCollectionList,
association,
lobSystemInstance,
OperationMode.Offline);
// 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)