Использование OData и внешнего типа контента в SharePoint 2013

Исходная статья опубликована в пятницу, 7 декабря 2012 г.

Одно из приятных улучшений SharePoint 2013 BCS заключается в том, что SharePoint может использовать OData в приложениях BDC. Однако существует пара неясных моментов, которые я недавно обнаружил, когда осуществлял данный процесс. Поэтому я решил описать их здесь на тот случай, если с ними столкнутся другие. Для начала я рекомендую ознакомиться со следующим документом, в котором рассматриваются основы создания приложения для OData: https://msdn.microsoft.com/en-us/library/sharepoint/jj163967.aspx. Главной особенностью данного процесса является то, что вы НЕ можете создать в SharePoint Designer приложение BDC, подключающееся к источнику OData, для этого необходимо создать внешний тип контента (ECT) с помощью такого средства, как Visual Studio.

Документ, на который я сослался выше, описывает процесс создания ECT. Для этого в нем показано, как использовать такие типы ECT в приложении SharePoint и развертывать их соответствующим образом, но НЕ показано, что следует делать, когда требуется добавить типы в каталог BDC для использования несколькими семействами сайтов. Именно этому и посвящена данная статья. Прежде всего, следует понять, что при выполнении процесса из приведенной выше статьи создается один тип ECT для каждой сущности (как таблица). Это важно знать, так как они будут использовать общее имя в файле ECT, что не позволит вам отправить более одного каталога BDC. Чтобы использовать все эти сущности в SharePoint, необходимо сделать следующее.

  1. Щелкните правой кнопкой мыши файл ECT в Visual Studio и выберите пункты "Открыть с помощью..." и "Редактор (текстовый) XML". В элементе "Модель" в верхней части документа отображается атрибут Name. Его значение должно быть уникальным для всех типов ECT, отправляемых в BDC, поэтому следует изменить каждый из них на описательное значение для данной сущности, например Customers Table.
  2. При желании вы можете изменить пространство имен для элемента Entity, который расположен в документе 20 строками ниже. Я изменил его в соответствии с именем модели, но это лишь вопрос предпочтений, а не обязательное требование.
  3. После внесения изменений и сохранения файла можно отправить файл ECT прямо в BDC. Просто используйте параметры по умолчанию (это модель) и нажмите кнопку "ОК".
  4. После импорта моделей не забудьте назначить пользователям разрешения на работу с ними, иначе вся проделанная работа будет бессмысленной.

Последнее замечание — готовое решение не позволяет распространить конечные точки метаданных OData на такие компоненты, как базы данных SQL, хранилище таблиц Azure и т. п. К счастью, их можно сравнительно легко добавить для SQL. Вот краткая инструкция.

  1. Создание нового пустого веб-приложения ASP.NET.
  2. Добавление модели данных с использованием сущностей (EDM) ADO.NET.
  3. Добавление службы данных WCF.
  4. В службе данных WCF требуется задать тип в конструкторе классов; вначале с этим могут возникнуть трудности. Найдите файл (который должен находиться в папке App_Code) с именем, похожим на myDataConnection.Context.tt. Если развернуть его, ниже отображается класс myDataConnection.Context.cs. Если открыть его, отображаются виды сведений, необходимые для службы данных WCF: 1) имя класса, которое будет использоваться в качестве типа для конструктора классов службы данных WCF; 2) имена поддерживаемых им сущностей, реализованных в виде свойств get; set;. Эти имена сущностей также потребуются вам в службе данных WCF, так как для каждой предоставляемой сущности нужно создать хотя бы SetEntitySetAccessRules. Подробнее это разъясняется в комментариях при добавлении службы данных WCF — я просто пытаюсь сообщить вам, где следует искать имя сущности, используемое при создании такого правила.

 

Это локализованная запись блога. Оригинал находится на странице Using OData and ECTs in SharePoint 2013