代码段:执行外部内容类型的 Updater 方法实例
上次修改时间: 2010年5月6日
适用范围: SharePoint Server 2010
本文内容
说明
必备组件
使用该示例
说明
以下代码示例演示如何使用服务器上的 BDC 运行时对象以编程方式执行外部内容类型的 Updater 方法实例。
必备组件
服务器上安装了 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
System.Web
用此过程末尾列出的代码替换 Program.cs 中自动生成的代码。
使用有效值替换 <siteUrl>、nameSpace> 和 <entityName> 的值。
保存该项目。
编译并运行该项目。
using System;
using Microsoft.SharePoint;
using Microsoft.SharePoint.BusinessData.SharedService;
using Microsoft.BusinessData.MetadataModel;
using Microsoft.BusinessData.MetadataModel.Collections;
using Microsoft.BusinessData.Runtime;
using Microsoft.SharePoint.Administration;
namespace SDKSamples
{
class Methods
{
static void Main(string[] args)
{
BDCUpdate();
}
//How To: Edit an item from an External Content Type
public static void BDCUpdate()
{
//Specify the SiteURL, Namespace and the Entity Name
string SiteURL = "<siteUrl>";
string nameSpace = "<nameSpace>";
string entityName = "<entityName>";
using (SPSite site = new SPSite(SiteURL))
{
using (new Microsoft.SharePoint.SPServiceContextScope(
SPServiceContext.GetContext(site)))
{
BdcService service =
SPFarm.Local.Services.GetValue<BdcService>(
String.Empty);
IMetadataCatalog catalog =
service.GetDatabaseBackedMetadataCatalog(
SPServiceContext.Current);
IEntity entity = catalog.GetEntity(
nameSpace, entityName);
ILobSystemInstance LobSysteminstance =
entity.GetLobSystem().
GetLobSystemInstances()[0].Value;
// Accept the user input for identity value
Console.Write(
"\nEnter identity value for which you want to edit : ");
int identityColumnValue =
int.Parse(Console.ReadLine());
Identity identity =
new Identity(identityColumnValue);
try
{
IEntityInstance ientityinstance =
entity.FindSpecific(
identity, "Read Item", LobSysteminstance);
IFieldCollection fieldCollection =
entity.GetFinderView("Read List").Fields;
//Display the old values
Console.WriteLine("\nOld Values : ");
foreach (IField field in fieldCollection)
{
Console.WriteLine(
field.Name.PadRight(20) + ":" +
ientityinstance[field.Name].ToString());
}
// The following will work only for Sales.Customer table in AdventureWorks2008
// Changing value of "TerritoryID" field
string fieldName = "TerritoryID";
// Example Value for TerritoryID will be 1,4,6 etc.
Console.Write(
"\nEnter the new value for the column {0}: ",
fieldName);
ientityinstance[fieldName] = int.Parse(Console.ReadLine());
ientityinstance["ModifiedDate"] = DateTime.Now;
ientityinstance.Update();
Console.WriteLine("Record updated");
//Display the Updated values
Console.WriteLine("\nUpdated Values : ");
foreach (IField field in fieldCollection)
{
Console.WriteLine(
field.Name.PadRight(20) + ":" +
ientityinstance[field.Name].ToString());
}
}
catch (ObjectNotFoundException exception)
{
Console.WriteLine(
"Identity column with value {0} not found...",
identityColumnValue);
}
}
}
Console.WriteLine("Press any key to continue...");
Console.ReadKey();
}
}
}
请参阅
引用
GetDatabaseBackedMetadataCatalog(SPServiceContext)