ODP.NET в Microsoft Enterprise Library 6.0

Есть пара вопросов по этому поводу, но ни на один из них не было ответа.

В основном - используется ли в настоящее время реализация ODP.NET для enlib (6.0)? Или мне придется пойти по пути написания сопоставления / пользовательского DAO для ODP.NET?

Универсальная база данных может только помочь мне до сих пор, она не работает с хранимыми процедурами Oracle (ужасное «Обнаружение параметров не поддерживается для соединений с использованием GenericDatabase. Вы должны указать параметры явно или настроить соединение для использования типа, полученного из базы данных, которая поддерживает ошибку обнаружения параметра)

Я знаю о проекте entlibcontrib, но он, кажется, приостановлен/мертв, поскольку у него не было новой версии с 2011 года/entlib 5.0.

Будем признательны за любые указатели или советы по разработке пользовательских DAO для entlib.


person djangoat    schedule 24.07.2013    source источник


Ответы (2)


Вот наша официальная позиция по этому поводу:

Если вы работаете с базой данных Oracle, вы можете использовать поставщика Oracle, включенного в Enterprise Library, и поставщика Oracle ADO.NET, который требует ссылки или добавления сборки System.Data.OracleClient.dll. . Однако имейте в виду, что поставщик OracleClient устарел в версии 4.0 .NET Framework, а поддержка этого поставщика устарела в Enterprise Library 6. Хотя поддержка поставщика OracleClient по-прежнему включена в Enterprise Библиотека 6, для будущей разработки вам следует рассмотреть возможность выбора другой реализации класса Database, использующей другой драйвер Oracle.

Я не встречал реализации ODP.NET для EntLib6. Если вы в конечном итоге обновите версию, доступную на EntLibContrib, для версии 5.0, опубликуйте ее на сайте contrib, чтобы другие могли ею воспользоваться. Должно быть довольно просто, никаких серьезных изменений в DAAB в версии 6.

Хотелось бы, чтобы у меня был лучший ответ для вас, но, в конце концов, все сводится к расстановке приоритетов историй для выпуска, и эта история была недостаточно высока для моей команды, чтобы ее подобрать.

person Grigori Melnik    schedule 28.07.2013
comment
Этот ответ в порядке. Просто нужно "официальное" разъяснение по этому вопросу. Все, что я придумаю (что мне нужно), я верну обратно в EntLibContrib. - person djangoat; 02.08.2013
comment
Любой полный образец исходного кода с использованием ODP.net-EnterpriseLibrary? EntLib Contrib ? ODP.NET имеет новую версию, полностью управляемую .NET. stackoverflow.com/a/18193544/206730 - person Kiquenet; 04.09.2013

Мы успешно подключаемся к Oracle 11g, используя ODP.NET и объект GenericDatabase в корпоративной библиотеке.

У нас была проблема с запуском хранимой процедуры в пакетах Oracle (забудьте, что это была за ошибка, но у нас была проблема с удалением команды до того, как она была фактически использована), и мы внесли небольшое изменение в корпоративную библиотеку, чтобы решить эту проблему. .

В SprocAccessor.cs мы изменили

public override IEnumerable<TResult> Execute(params object[] parameterValues)

выглядеть так

public override IEnumerable<TResult> Execute(params object[] parameterValues)
{
    using (DbCommand command = Database.GetStoredProcCommand(procedureName))
    {            
        parameterMapper.AssignParameters(command, parameterValues);                
        //return base.Execute(command);  Removed 

        //foreach added by ngpojne.  This allows the command to be used before it is disposed of.
        foreach (TResult result in base.Execute(command))
        {
            yield return result;
        }
    }
}
person jeff.eynon    schedule 12.06.2014