![]() |
+7 (495) 229-0436 | ![]() |
shopadmin@itshop.ru | 119334, г. Москва, ул. Бардина, д. 4, корп. 3 | ![]() |
![]() |
![]() |
|
|
Доступ к базе данных Oracle средствами ADO.NET Entity Framework14.05.2012 17:19
При разработке программного обеспечения всегда руководствовался простым правилом, чем меньше в развивающемся проекте используется сторонних компонентов, платформ, технологий, тем лучше. Почти все гениальное - просто. К сожалению, у разработчика не всегда есть возможность свободного выбора средств и систем, с которыми он работает. Вот и мне достался проект Windows Forms + ODAC + Oracle DB Server. С большой радостью узнал о выходе Oracle Data Access Components (ODAC) for Microsoft Entity Framework and LINQ to Entities (Beta2). Очень ждал этого момента и вот свершилось! Можно не использовать сторонние ORM - все под ключ. Как научить приложение использовать Entity Framework через установленный на конечных машинах клиент ODAC - описано в пошаговой инструкции от Oracle. Кому интересно, как избавиться от необходимости установки клиента Oracle на машинах пользователей, прошу под кат. Общие требования К системе пользователя: К системе разработчика: Подключаемые библиотеки Для организации доступа к базе данных Oracle необходимо к проекту добавить следующие библиотеки из пакета ODAC.NET: Библиотеку "путь к клиенту"\client_1\odp.net\bin\4\Oracle.DataAccess.dll (~1.4 MB)) подключить как Reference и присвоить свойству "Copy local" значение "true". Следующие файлы необходимо просто добавить к проекту и присвоить свойству "Copy to Output Directory" значение "Copy if newer": Строка подключения должна иметь такой же вид как в файле "tnsnames.ora": Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=ServerNameOrIP)(PORT=PortNumber)))(CONNECT_DATA=(SERVICE_NAME=DBName)));User Id=UserName;Password=UserPa$$w0rd; Этого достаточно для обеспечения доступа к БД без установки клиента на машине пользователя: Что необходимо сделать для использования Entity Framework Model без установки клиента Oracle Создать, либо свою модель ADO.NET Entity Data Model, либо как в примере - "HRModel" с контекстом "HREntities". Для этого необходимо воспользоваться мастером добавления, как показано в руководстве от Oracle, упомянутом выше. В файл конфигурации проекта (App.Config/Web.Config) будет автоматически (если вы выберете данный соответствующий пункт в мастере) добавлена строка подключения к БД Oracle: Тут стоит обратить особое внимание на то, что значение, присвоенное атрибуту "provider connection string" обязательно должно быть в двойных кавычках (для их обозначения необходимо использовать код &_q_u_o_t). Это также стоит учесть при динамическом формировании строки подключения. Затем в файле конфигурации проекта необходимо создать раздел, в котором мы добавляем свой поставщик данных к уже зарегистрированным в системе, список которых находится в файле "%windir%\Microsoft.NET\Framework\v4.0.30319\Config\machine.config". Если на машине установлен ODAC, то провайдер "Oracle.DataAccess.Client" уже будет прописан в файле конфигурации системы и попытка добавить наш поставщик вызовет ошибку при старте приложения: "An error occurred creating the configuration section handler for system.data: Column 'InvariantName' is constrained to be unique. Value 'Oracle.DataAccess.Client' is already present". Для предотвращения подобной ситуации, при помощи тега Тонкости При динамическом подключении модели к БД "правильным" методом от MS, следует обратить внимание на не совсем корректное формирование строки подключения через объект EntityConnectionStringBuilder * This source code was highlighted with Source Code Highlighter. В результате entityBuilder.ToString() вернет строку подключения с лишними одинарными кавычками, в которые заключено полностью значение атрибута provider connection string В то время как провайдер Oracle требует строку подключения следующего формата: - иначе выдает ошибку. * This source code was highlighted with Source Code Highlighter. Быть может это отголоски бета версии - посмотрим как будет в релизе, который, как обещает Oracle, состоится в четвертом квартале 2011 года. В итоге можно записать в актив: Прямая связка .NET Entity Framework с СУБД Oracle DB Server, без использования сторонних разработок В пассив можно занести: Увеличение объема приложения на ~130 МБ - в моем случае не очень критично, так как ClickOnce загружает только измененные или новые файлы. Спасибо за ваше время. Ссылки по теме |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
О нас |
Интернет-магазин ITShop.ru предлагает широкий спектр услуг информационных технологий и ПО.
На протяжении многих лет интернет-магазин предлагает товары и услуги, ориентированные на бизнес-пользователей и специалистов по информационным технологиям. Хорошие отзывы постоянных клиентов и высокий уровень специалистов позволяет получить наивысший результат при совместной работе. В нашем магазине вы можете приобрести лицензионное ПО выбрав необходимое из широкого спектра и ассортимента по самым доступным ценам. Наши менеджеры любезно помогут определиться с выбором ПО, которое необходимо именно вам. Также мы проводим учебные курсы. Мы приглашаем к сотрудничеству учебные центры, организаторов семинаров и бизнес-тренингов, преподавателей. Сфера сотрудничества - продвижение бизнес-тренингов и курсов обучения по информационным технологиям.
|
119334, г. Москва, ул. Бардина, д. 4, корп. 3 +7 (495) 229-0436 shopadmin@itshop.ru |
|
© ООО "Interface Ltd." Продаем программное обеспечение с 1990 года |