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


Фрагмент кода. Выполнение экземпляров методов Associator и Disassociator над внешним типом контента

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

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

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

Описание

В примере кода ниже показывается, как программно выполнить экземпляры методов Associator и Disassociator внешнего типа контента, используя объектную модель среды выполнения 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. Microsoft.SharePoint.BusinessData

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

  8. Замените значения имени сущности, имени LobSystem и имени LobSystemInstance на допустимые значения.

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

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

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
    {
        // FKLessAssociateDisAssociate.
        public static void AssociateSalesOrderWithSalesReasonSample()
        {
            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 1 to use to navigate the association.
            IEntityInstance salesReasonInstance = 
                salesReasonEntity.FindSpecific(
                new Identity(1), 
                "Read Item", 
                lobSystemInstance, 
                OperationMode.Offline);
            IEntityInstance salesOrderInstance = 
                salesOrderEntity.FindSpecific(
                new Identity(44444), 
                "Read Item", 
                lobSystemInstance, 
                OperationMode.Offline);

            // Create a collection with the source instance.
            EntityInstanceCollection sourceInstances = 
                new EntityInstanceCollection(1);
            sourceInstances.Add(salesReasonInstance);

            // Get the association.
            IAssociation associator = 
                (IAssociation)salesOrderEntity.GetMethodInstance(
                "Sales Order by Reason Associator", 
                MethodInstanceType.Associator);

            // Associate.
            salesOrderEntity.Associate(
                sourceInstances, 
                salesOrderInstance, 
                associator, 
                lobSystemInstance);

            // Get the disassociator.
            IAssociation disassociator = 
                (IAssociation)salesOrderEntity.GetMethodInstance(
                "Sales Order by Reason Disassociator", 
                MethodInstanceType.Disassociator);

            // Disassociate.
            salesOrderEntity.Disassociate(
                sourceInstances, 
                salesOrderInstance, 
                disassociator, 
                lobSystemInstance);            
        }

    }
}

См. также

Ссылка

BdcService

Services

IMetadataCatalog

GetDatabaseBackedMetadataCatalog(SPServiceContext)

GetEntity(String, String)

IEntity

GetLobSystem()

GetLobSystemInstances()

ILobSystemInstance

IEntityInstance

FindSpecific(Identity, String, ILobSystemInstance, OperationMode)

GetMethodInstance(String, MethodInstanceType)

IAssociation

EntityInstanceCollection

Associate(EntityInstanceCollection, IEntityInstance, IAssociation, ILobSystemInstance)

Disassociate(EntityInstanceCollection, IEntityInstance, IAssociation, ILobSystemInstance)