Десятки новых возможностей для работы c Firebird и InterBase в .Net Framework
Если вы до этого работали с Firebird или InterBase через стандартный .Net провайдер для OLE DB (System.Data.OleDb), то наверняка сталкивались с подобными проблемами:
- Необходимость добавлять ВСЕ параметры вручную.
Даже если OleDb провайдер поддерживает генерацию параметров для команд, .Net провайдер её не использует, и вы как программист, были вынуждены делать работу самостоятельно. - Отсутствие поддержки именованных параметров.
Хотя они номинально есть, но по факту их использование связано с целым рядом сложностей (порядок добавления параметра в коллекцию и т.д.) - Невозможность использования нескольких DataReader-объектов одновременно (MARS-технология).
- Выполнение SQL-скриптов, содержащих несколько SQL-инструкций в тексте команды.
- Это далеко не полный список неудобств, с которыми приходилось мириться .Net-разработчикам.
Теперь все по-другому – это принципиально новый ADO.NET Data Provider for OLE DB
В течение всего года мы вели активную разработку нового проекта «LCPI ADO.NET Data Provider for OLE DB» для всех программистов, которые вынуждены использовать недоделанные компоненты для работы с Firebird и InterBase в .Net Framework. С сегодняшнего дня этот управляемый провайдер входит в состав нашего стандартного дистрибутива IBProvider.
Это пока всего лишь Beta-версия с ограниченными возможностями
Пока не реализованы OleDb-схемы, OleDbDataAdapter, OleDbCommandBuilder, а так же интерфейсы для Entity Framework. Если вы фанат генераторов кода и визуальных редакторов, то это конечно ограничивает функциональность.
Все эти возможности реализованы в следующих классах пространства имен lcpi.data.oledb:
- OleDbConnectionStringBuilder
- OleDbConnection
- OleDbTransaction
- OleDbCommand
- OleDbParameter
- OleDbParameterCollection
- OleDbDataReader
- OleDbException
Хотя наш новый OLE DB Provider для .Net работает через стандартные интерфейсы OleDb, пока он поддерживает только LCPI.IBProvider.3 для Firebird и InterBase, так как именно в нем эти интерфейсы реализованы на 100%.
Если вы разработчик OLE DB-провайдера, для других баз данных, напишите нам, мы вышлем спецификацию того, что нужно, чтобы ваш провайдер смог полноценно работать в .Net Framework через наш OLE DB Provider для .Net
Что вы можете делать с новым ADO.NET провайдером уже сейчас:
//Use // - Firebird SQL Server v2.5 // - LCPI.IBProvider v3.11.1 // - LCPI ADO.NET Data Provider for OLE DB using System; using System.Data; using xdb=lcpi.data.oledb; class Program { static void Main(string[] args) { const string c_cn_str ="provider=LCPI.IBProvider.3;" +"location=home2:d:\\database\\employee.fdb;" +"user id=SYSDBA;" +"password=masterkey;"; try { using(var cn=new xdb.OleDbConnection(c_cn_str)) { cn.Open(); using(var tr=cn.BeginTransaction(IsolationLevel.RepeatableRead)) { using(var cmd=new xdb.OleDbCommand("",cn,tr)) { cmd.CommandText="select EMP_NO,FULL_NAME from EMPLOYEE where FIRST_NAME=:x"; cmd["x"].Value="Leslie"; //set params without manual addition. using(var reader=cmd.ExecuteReader()) { cmd.CommandText="update EMPLOYEE set FIRST_NAME=UPPER(FIRST_NAME) " +"where EMP_NO=:id RETURNING NEW.FIRST_NAME;"; cmd.Parameters.Refresh(); // recreate params without creating new command while(reader.Read()) { cmd.Parameters["id"].Value=reader["EMP_NO"]; cmd.ExecuteNonQuery(); Console.WriteLine("Update \"{0}\" emp_no={1}. New FIRST_NAME=\"{2}\"", reader["FULL_NAME"], reader["EMP_NO"], cmd["FIRST_NAME"].Value); }//while }//using reader }//using cmd tr.Rollback(); }//using tr }//using cn } catch(Exception exc) { Console.WriteLine("ERROR: [{0}] - {1}",exc.Source,exc.Message); } }//Main };//class Program
Результат работы:
Уже 3 800 доказательств надежности нового ADO.NET провайдера
Скажите, разве можно говорить о надежности компонент доступа, когда все тестирование сводится к сбору критических ошибок от пользователей и их устранению в авральном режиме?
В новом проекте уже реализовано более 3 800 различных автоматических тестов на основе «NUnit Framework». Мы будем досконально проверять КАЖДЫЙ релиз. Все тесты, входят в состав дистрибутива, и вы можете убедиться в надежности лично.
Что еще было сделано, для того, чтобы работа с данными стала еще надежнее:
- Локализация сообщений об ошибках. Реализованы русские и английские шаблоны сообщений.
- Агрессивное управление временем жизни объектов. Не допускаются вызовы методов у объекта после вызова Dispose. Отложенное выполнение Dispose до завершения всех текущих вызовов методов объекта.
- Повсеместное использование CER, для предотвращения утечек ресурсов.
- Реализована поддержка многопоточных программ.
- Собственная реализация управления COM-объектами (на базе SafeHandle).
- Унифицированная поддержка 32-битных и 64-битных платформ.
Сейчас самое время скачать и установить новый IBProvider и LCPI ADO.NET Data Provider for OLE DB
Если вам необходимо надежное, быстрое и самое функциональное решение для работы с базами данных Firebird и InterBase в .Net Framework, скачивайте и устанавливайте новый комплект прямо сейчас:
Если нет, закажите полноценную версию IBProvider Pro и получите LCPI ADO.NET Data Provider для OLE DB в подарок
Поскольку разработка коммерческая, мы можем себе позволить оперативно(!) реагировать на все запросы пользователей и наращивать необходимую вам функциональность с каждым релизом, которые, кстати говоря, выходят очень часто, так как:
- Тестирование новых версий для нас не бесконечный кошмар и исправление ошибок, а обычная осознанная работа, часть из которой проводится в автоматическом режиме.
- Масштабируемая архитектура позволяет не тратить время на переписывание кода с нуля. Причем независимо от того необходимо ли нам добавить новую серьезную функциональность или незначительную мелочь.
Поэтому частые релизы с вашими новыми функциями это норма, а не волшебство. От вас только требуется сообщить нам на [email protected] о том, чего вам не хватает, а остальное мы берем на себя.