Поделиться через


Фрагменты кода. Добавление элемента управления доступом в объект метаданных с помощью объектной модели администрирования

Дата последнего изменения: 7 мая 2010 г.

Применимо к: SharePoint Server 2010

В этой статье
Описание
Необходимые компоненты
Использование этого примера

Описание

В следующем примере кода показано, как программно добавить элемент управления доступом в объект метаданных (модель в этом примере) с помощью объектной модели администрирования BDC на сервере.

ПримечаниеПримечание

Объектную модель клиента администрирования BDC можно использовать для создания внешнего типа контента на клиенте.

Необходимые компоненты

  • Microsoft SharePoint Server 2010 или Microsoft SharePoint Foundation 2010 на сервере.

  • Microsoft .NET Framework 3.5 и Microsoft Visual Studio на клиентском компьютере.

  • По крайней мере один внешний тип контента зарегистрирован в хранилище метаданных BDC.

Использование этого примера

  1. Запустите Visual Studio и создайте проект консольного приложения C#. При создании проекта выберите .NET Framework 3.5.

  2. В меню Вид выберите Страницы свойств, чтобы вывести свойства проекта.

  3. На вкладке Построение в качестве Целевой платформы выберите Любой ЦП.

  4. Закройте окно свойств проекта

  5. В обозревателе решений в разделе Ссылки удалите все ссылки проекта кроме System и System.Core.

  6. Добавьте в проект следующие ссылки:

    1. Microsoft.BusinessData

    2. Microsoft.SharePoint

    3. System.Web

  7. Замените автоматически созданный код в файле Program.cs на код, приведенный в конце этой процедуры.

  8. Замените строковое значение "<siteUrl>" действительным URL-адресом сайта SharePoint.

  9. Вместо "<EntityNamespace>" и "<EntityName>" укажите пространство имен и имя сущности соответственно.

  10. Сохраните проект.

  11. Скомпилируйте и запустите проект.

using System;
using Microsoft.BusinessData.Infrastructure;
using Microsoft.BusinessData.MetadataModel;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;
using Microsoft.SharePoint.BusinessData.Administration;
using Microsoft.SharePoint.BusinessData.Infrastructure;
using Microsoft.SharePoint.BusinessData.SharedService;

namespace Microsoft.SDK.SharePoint.Samples.Bdc.AddAccessControlEntry
{
    class Program
    {
        static void Main(string[] args)
        {
            // Get the Catalog for the SharePoint site.
            BdcService service =
                SPFarm.Local.Services.GetValue<BdcService>(
                String.Empty);
            SPSite site = new SPSite("<siteUrl>");
            SPServiceContext context = SPServiceContext.GetContext(site);

            AdministrationMetadataCatalog catalog =
                service.GetAdministrationMetadataCatalog(context);

            // Retrieve an existing Entity.
            Entity entity = catalog.GetEntity(
                "<EntityNamespace>", "<EntityName>");

            // Add Execute permissions for a specified user to the Entity.
            Console.WriteLine(
                "Type the user account to add Execute Rights Access: ");
            string userAccount = Console.ReadLine();

            IAccessControlList acl = entity.GetAccessControlList();
            Console.WriteLine(
                "Adding " + userAccount + 
                "with Execute and Set Permission rights to entity: " + entity.Name);
            IAccessControlEntry ace = new IndividualAccessControlEntry(
                BdcAccessControlList.TranslateFriendlyStringToEncodedClaim(
                userAccount),
                BdcRights.Execute | BdcRights.SetPermissions);
            acl.Add(ace);
            entity.SetAccessControlList(acl);
            // Copy entity permissions to its methods so that they can 
            // be executed by the added user.
            entity.CopyAclAcrossChildren();

            // Retrieve the LobSystem for this entity and add the user 
            // to it as well. This will allow the added user to access 
            // the external source for retrieving data.
            LobSystem lobSystem = entity.LobSystem;
            IAccessControlList lobSystemAcl = 
                lobSystem.GetAccessControlList();
            lobSystemAcl.Add(ace);
            lobSystem.SetAccessControlList(lobSystemAcl);
        }

    }
}

См. также

Ссылка

BdcService

Services

GetAdministrationMetadataCatalog(SPServiceContext)

AdministrationMetadataCatalog

GetEntity(String, String)

Entity

GetAccessControlList()

SetAccessControlList(IAccessControlList)

CopyAclAcrossChildrenForSetting(String)

IAccessControlList

IndividualAccessControlEntry

IAccessControlEntry

LobSystem