Доступ к данным Oracle из Sharepoint 2010 с помощью Business Data Connectivity Model

Очень часто возникает необходимость интегрировать базу данных с веб-приложением. Одним из наиболее удобных способов организовать доступ к данным Оracle является использование Business Connectivity Services от Майкрософт. В этой статье мы приведем краткую инструкцию, как это сделать.

Что такое BCS?

«Microsoft Business Connectivity Services (BCS) (прежнее название — каталог бизнес-данных) позволяет пользователям считывать и записывать данные внешних систем — через веб-службы, базы данных и сборки Microsoft .NET Framework, — работая в приложениях Microsoft SharePoint 2010 и Microsoft Office 2010. В составе приложений SharePoint 2010 и Office 2010 имеются компоненты продуктов, позволяющие использовать внешние данные непосредственно, как в интерактивном, так и в автономном режиме. Разработчики могут получать доступ к разнообразным функциям и быстро создавать решения с помощью знакомых инструментов, таких как Microsoft Visual Studio 2010 и Microsoft SharePoint Designer 2010.» Microsoft Business Connectivity Services. Microsoft Developer Network.

Интеграция Oracle и Sharepoint 2010 через Business Connectivity Model

Рассмотрим интеграцию Oracle c Sharepoint на примере корпоративного портала. Нам было необходимо построить решение, которое позволяет просматривать и фильтровать данные о сотрудниках: ФИО, адреса регистрации и жительства, информация об образовании, информация о должности, отпусках, больничных, воинской обязанности. Так как БД с информацией о сотрудниках существовала давно, ее  предстояло интегрировать в разрабатываемый корпоративный портал.
Приведем пример организации доступа к БД с помощью модели BDC. Модель BDC позволяет разрабатывать приложения путём добавления сущностей и методов в файл модели.

Для создания BDC модели необходимо:

  1. Создать Empty Sharepoint Project.
  2. Добавить в проект модель BDC.
    Добавление модели BDC
  3. Созданные файлы переименовываем в User и UserService:
    Solution Explorer

Для доступа к данным Oracle будем использовать Oracle develop tools.

  1. В файле UserService определим методы, которые возвращают список и выбранную запись
public static Users ReadItem(int id)
{
string constr = "Data Source=localhost:1521/ORATESTDB;User ID=*****;Password=*****";
using (var conn = new OracleConnection(constr))
{
conn.Open();
var cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = "SELECT *FROM USERS WHERE ID=:ID";
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = id });
var dr = cmd.ExecuteReader
if (!dr.Read()) return new Users();
var usr = new Users();
usr.ID = Convert.ToInt32(dr["id"]);
usr.FirstName = dr.GetString(1);
usr.LastName = dr.GetString(2);
return usr;
}
}
public static IEnumerable<Users> ReadList()
{
string constr = "Data Source=localhost:1521/ORATESTDB;User ID=*****;Password=*****";
var users = new List<Users>();
using (var conn = new OracleConnection(constr))
{
conn.Open();
var cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = "SELECT *FROM USERS";
cmd.CommandType = CommandType.Text;
OracleDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
var usr = new Users();
usr.ID = Convert.ToInt32(dr["id"]);
usr.FirstName = dr.GetString(1);
usr.LastName = dr.GetString(2);
users.Add(usr);
}
}
return users;
}
  1. Теперь можно компилировать и разворачивать решение.
  2. Результат:
  3. Записи в базе данных

Заключение

В результате мы построили решение, которое позволяет  подтягивать данные на портале Sharepoint из Оracle 11g. В нашем случае, на корпоративном портале компании отражались все данные о сотрудниках, что сделало удобным использование портала в кадровых целях.