如何:管理对象模型使用入门

虽然您可以使用 XML 来创建元数据,但业务数据目录提供了一种管理对象模型,可用于创建、编辑和删除元数据。管理对象模型的主要目的是帮助您编写工具,以简便地创建和管理元数据。

管理对象模型遵循业务数据目录元数据模型。它可定义所有 13 个元数据对象,并提供了几种方法,使您可以执行以下操作:

  • 创建和删除元数据对象。

  • 以编程方式执行与元数据相关的其他管理任务,例如将元数据导入业务数据目录以及配置元数据对象上的安全性。

管理对象模型在 Microsoft.SharePoint.Portal.dll 中的 Microsoft.Office.Server.ApplicationRegistry.Administration 命名空间中定义。

重要

运行时对象模型也可定义元数据对象,但只允许您读取他们,而不允许创建、编辑或删除他们。因此,希望编辑元数据时,应使用管理对象模型。如果只需要读取元数据,则使用运行时对象模型,因为它是缓存的而且速度很快。与之相反,管理对象模型具有相对较高的延迟,业务数据目录更新所有前端 Web 服务器(前端 Web 服务器)和部署中的应用程序服务器的缓存前会有几秒钟的延迟。

以下是用管理对象模型执行的前三个任务:

  • 创建 Lob 系统、实体和方法。

  • 创建访问控制列表 (ACL) 并设置元数据对象的安全性。

  • 将元数据导入业务数据目录。

在此部分,我们将介绍如何用 Microsoft Visual C# 编写简单的 Microsoft Visual Studio 2005 控制台应用程序,以使用管理对象模型执行以上三个任务。

ApplicationRegistry 是管理对象模型中的顶级对象。它的静态 Instance 属性表示并充当业务数据目录的入口点。此属性使您能够创建、读取、更新和删除所有元数据对象,包括 LOB 系统、实体和方法。

备注

业务数据目录功能最初叫做应用程序注册表,但现在改名为业务数据目录。因此,您会在对象模型中看到术语 ApplicationRegistry。当您看到此术语时,请记住,它指的是业务数据目录。

示例

正如您可能已经知道的,业务数据目录是作为 Microsoft Office SharePoint Server 2007 共享服务实现的,并且跨共享服务提供程序共享。因此,在使用 ApplicationRegistry 对象前,您必须引用与业务数据目录关联的共享服务提供程序。

下面的代码示例演示如何设置用于业务数据目录的共享服务提供程序。

在指定共享服务提供程序后,可以使用 ApplicationRegistry 对象来创建和管理在业务数据目录中注册的 LobSystemInstance 对象。CreateLobSystemAndInstance 方法演示如何使用对象模型来创建 LobSystem 实例。

先决条件

  • 确保已创建了一个共享服务提供程序。

  • 用共享资源提供程序的名称替换代码中的常数值 EnterYourSSPNameHere。

项目引用

运行此示例之前,在控制台应用程序代码项目中添加下面的项目引用:

  • Microsoft.SharePoint

  • Microsoft.SharePoint.Portal

  • Microsoft.Office.Server

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Office.Server.ApplicationRegistry.Administration;
using Microsoft.Office.Server.ApplicationRegistry.Infrastructure;
using WSSAdmin = Microsoft.SharePoint.Administration;
using OSSAdmin = Microsoft.Office.Server.Administration;

namespace Microsoft.SDK.SharePointServer.Samples
{
    class GetStartedAndCreateSystem
    {
        const string yourSSPName ="EnterYourSSPNameHere";

        static void Main(string[] args)
        {
            SetupBDC();
            CreateLobSystemAndInstance();
            Console.WriteLine("Press any key to exit...");
            Console.Read();
        }
        static void SetupBDC()
        {
            SqlSessionProvider.Instance().SetSharedResourceProviderToUse(yourSSPName);
        }
        static void CreateLobSystemAndInstance()
        {
            LobSystem system = ApplicationRegistry.Instance.LobSystems.Create("AdventureWorksSampleFromCode", true, "Microsoft.Office.Server.ApplicationRegistry.SystemSpecific.Db.DbSystemUtility", "Microsoft.Office.Server.ApplicationRegistry.SystemSpecific.Db.DbConnectionManager", "Microsoft.Office.Server.ApplicationRegistry.SystemSpecific.Db.DbEntityInstance");

            LobSystemInstance sysInstance = system.LobSystemInstances.Create("AdventureWorksSampleFromCode", true);

            sysInstance.Properties.Add("AuthenticationMode", (Int32)Microsoft.Office.Server.ApplicationRegistry.SystemSpecific.Db.DbAuthenticationMode.PassThrough);

            sysInstance.Properties.Add("DatabaseAccessProvider", (Int32)Microsoft.Office.Server.ApplicationRegistry.SystemSpecific.Db.DbAccessProvider.SqlServer);

            sysInstance.Properties.Add("RdbConnection Data Source", "YourAdvWorks2000ServerNameHere");

            sysInstance.Properties.Add("RdbConnection Initial Catalog", "AdventureWorks2000");

            sysInstance.Properties.Add("RdbConnection Integrated Security", "SSPI");

            sysInstance.Properties.Add("RdbConnection Pooling", "false");

            sysInstance.Properties.Add("WildCardCharacter", "%");

            sysInstance.Update();
            Console.WriteLine("Created a system instance successfully.");
        }
    }
}

See Also

概念

业务数据目录:元数据模型