Показаны сообщения с ярлыком C#. Показать все сообщения
Показаны сообщения с ярлыком C#. Показать все сообщения

вторник, 8 декабря 2015 г.

Firebird Entity Framework 6 - DbContext

Добрый день.
Сегодня я вам расскажу как в свои проекты добавить поддержку Firebird через Entity Framework 6,

Для начала вам нужно скачать мою утилиту, которая прописывает библиотеки Firebird в Visual Studio 2015. Установите утилиту.



После установки, запускайте Visual Studio 2015 и создавайте новый проект Window Forms.


Добавьте ссылки на сборки Firebird в ваш проект.


Укажите файлы из той папки, в которую была установлена утилита.


Вы должны добавить 2 файла в ваш проект:
EntityFramework.Firebird.dll
FirebirdSql.Data.FirebirdClient.dll


Теперь нужно добавить пакет Nuget - EntityFramework




В итоге в вашем проекте должны быть такие сборки:


Теперь откройте файл app.config и закоментируйте все внутри тега <entityFramework>
И добавьте следующий текст:

    <defaultConnectionFactory type="FirebirdSql.Data.EntityFramework6.FbConnectionFactory, EntityFramework.Firebird" />
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
      <provider invariantName="FirebirdSql.Data.FirebirdClient" type="FirebirdSql.Data.EntityFramework6.FbProviderServices, EntityFramework.Firebird" />
    </providers>

Должно получиться примерно как на картинке:

Сохраните и закройте файл.
Добавьте в проект новый элемент Модель EDM.


Выбираем Конструктор из базы данных


Нажимайте "Изменить"


Выбирайте Firebird Data Source


Указывайте параметры подключения к вашей базе данных.


Нажимайте точку и потом кнопку Далее.


Выбирайте таблицы, которые нужно загрузить в модель.


Поставьте флажок и нажмите ОК, иначе замучает.


Модель создана.


Как именно пользоваться моделью, я надеюсь рассказывать не надо. Или можно почитать об этом в сетях.

Надеюсь вы сможете оценить мою утилиту и данную статью.
Спасибо.

четверг, 26 декабря 2013 г.

Реализация асинхронной загрузки FillAsync для DbDataAdapter в .NET Framework 4.5 с помощью async и await

Добрый день.
Не так давно я начал изучать нововведения в .NET Framework 4.5
В частности заинтересовала реализация async и await методов.
Сам постоянно работаю с базами данных, которые загружаю с помощью BackgroundWorker или другого потока, чтобы не блокировать интерфейс пользователя при долгой загрузке.
Но меня расстроило отсутствие встроенной возможности асинхронной загрузки через  DbDataAdapter от которого наследуются адаптеры данных. Метод FillAsync просто отсутствует.

OpenAsync() в DbConnection есть, ReadAsync() в DbDataReader есть, а вот FillAsync() в DbDataAdapter нет. Для меня это оказалось серьезным поводом не обновлять мои проекты, т.к. везде используется Fill в адаптере данных.

Но немного подумав, я решил все таки реализовать такой метод сам.
В итоге я написал расширение для DbDataAdapter.
И хочу рассказать вам как я это сделал.

Добавляем в проект новый класс с любым именем, например StaticData.
Со следующим кодом:

using System.Data;
using System.Data.Common;
using System.Threading.Tasks;

namespace AsyncAwaitTesting1
{
    static class StaticData
    {
        public static async Task FillAsync(this DbDataAdapter da, DataTable ds)
        {
            var t = new Task(() => Load(da, ds));            
            t.Start();
            return await t;
        }

        private static int Load(DbDataAdapter da, DataTable dt)
        {            
            return da.Fill(dt);
        }
    }
}




Допустим в проекте уже имеется набор данных. Перейдем к редактору кода:


Добавим код на на рисунке ниже


Прошу обратить внимание что для примера тут расширен адаптер данных только для одной таблицы Codebranch. По идее это нужно сделать для всех таблиц набора данных.
Еще обратите внимание что пространство имен тут тоже другое.

В итоге верхний код добавляет метод FillAsync для адаптера данных.
Работает это так:
int i = await codebranchTableAdapter1.FillAsync(dynPlatformDataSet1.Codebranch);

А вот сам код обработчика


Теперь, при таком сценарии действия метод Fill выполняется асинхронно, не блокируя UI.
Пока неудобство представляет необходимость вручную добавлять методы FillAsync для каждого типизированного адаптера данных.

Хотелось бы чтобы разработчики, все таки учли это и сами включили метод FillAsync для адаптеров данных в будущих редакциях NET Framework.

Пока что все

пятница, 28 сентября 2012 г.

Firebird DDEX Provider 2.0.6 для Visual Studio 2012 готов.

Коллеги, представляю вашему внимаю доработанный инсталятор инструментов Firebird DDEX для Visual Studio 2008/2010/2012. Этот инсталятор был успешно протестирован мной с Visual Studio 2010 и Visual Studio 2012. 

Скачать Firebird DDEX 2.0.6 для Visual Studio 2012 можно по ссылке.
Отдельно скомпилировал локализованный русский инсталятор и отдельно английский. Скачивайте тот, который вам нужен. Кроме как языками установщика они ни чем не отличаются.

В комплекте сидит библиотека FirebirdSql.Data.FirebirdClient.dll версии 2.7.7 для .NET Framework 3.5.








Счастливых разработок коллеги.


понедельник, 4 июня 2012 г.

Новая версия инсталлятора Firebird tools 2.7.7 для Visual Studio

Добрый день. Объявляю о публикации новой версии инсталятора инструментов для работы с Firebird из Visual Studio 2008/2010. В этой версии используется оригинальная версия 2.7.7 сборки файла FirebirdSql.Data.FirebirdClient.dll.



Более подробно можно прочитать в предыдущей статье.

вторник, 29 мая 2012 г.

ASP.NET и Firebird Membership Provider в Visual Studio 2010

Добрый день, читатели. Многие из вас уже сталкивались с веб программированием и наверняка все заметили что Microsoft очень сильно продвигает через студию свою базу SQL Server.

В этой статье я предлагаю ознакомиться с вариантом интеграции Firebird в технологии ASP.NET.
В частности в ASP.NET есть несколько встроенных компонентов для работы с аутентификацией и авторизацией. Их можно достаточно легко прикрутить к Firebird вместо SQL Server.

И так поехали:

1. Нам нужна будет сборка FirebirdSql.Web.Providers.dll.На момент публикации статьи самая свежая версия сборки 2.6.0. Скачать её можно по ссылке.

2. Сборка этой версии построена на основе сборки FirebirdSql.Data.FirebirdClient.dll верси 2.6.0. Поэтому вам она тоже будет нужна. Скачать её можно по ссылке. Можно ещё пойти сложным путем - скачать исходник и перекомпилировать его с более новой версией файла FirebirdSql.Data.FirebirdClient.dll.

3. Скачиваем  FirebirdSql.Data.FirebirdClient.dll, распаковываем куда-нибудь и устанавливаем её в глобальный кэш сборок (GAC). В Windows XP это делается простым перетаскиванием этого файла в папку C:\Windows\Assembly. В других версиях придется использовать Gacutil.exe с параметром -i.

4. Далее создаем новую базу данных Firebird. В этом очень поможет IBExpert.

5. Скачиваем скрипт создания необходимой структуры базы данных по ссылке. Засовываем его  в IBExpert и выполняем. Если эта ссылка не будет работать, то есть эти скрипты на сайте sourceforge. Но там они в нескольких файлах. По первой ссылке скрипт объединен в один файл для вашего удобства.

У вас должна создаться структура базы данных, готовая к употреблению.



6. Создайте новое приложение ASP.NET в Visual Studio. Версию Framework установите 4.

7. Добавьте ссылку на сборку FirebirdSql.Web.Providers.dll

8. Откройте файл web.config и замените его этот. Откорректируйте часть этого кода, согласно вашим настройкам базы данных Firebird (путь, пароль, имя пользователя).

9. Нажимайте F5 и начинайте отладку с широко открытыми глазами))).

10. Если возникнут ошибки: а) проверьте путь к базе данных Firebird и сравните его с настройками в web.config. б) проверьте чтобы обе сборки Firebird имели одинаковую версию 2.6.0

У кого ничего не получилось - вот ссылка на весь мой проект WebApplication1.
И ссылка на базу данных Firebird.
Вот и всё, счастлива. Вопросы и коменнты пишите ниже.

понедельник, 23 апреля 2012 г.

Инсталлятор Firebird tools для Visual Studio

Добрый день.
Всем, всем, кто работает с бд Firebird через Visual Studio это будет интересно!
Больше нет необходимости вручную менять файл machine.config и вносить изменения в реестр. Теперь для этого есть инсталятор.



Инсталятор устанавливает Firebird в качестве DDEX провайдера для Visual Studio.
Поддерживаются версии 2008 и 2010 (32 и 64 бит).

Важное замечание!
При выполнения удаления, из глобального кеша сборок удаляются все сборки FirebirdSql.Data.FirebirdClient любых версий! Прошу это учесть. Это особенности работы программы gacutil.exe.

В качестве исходной библиотки используется библиотке FirebirdSql.Data.FirebirdClient.dll версии 2.7.0. В этой библиотеке исправлен косяк с запросом схем по ForeignKeyColumns. Тут схема выдается правильная. В результате набор данных строится ПРАВИЛЬНО!



После установки запустите Visual Studio, откройте или создайте проект.
Нажмите Data - Add New Data Source




Выберите Database.


Укажите источник данных Firebird Data Source


Укажите параметры подключения и всё


Скачать инсталятор или отдельно DLL можно по ссылке.

Дополнения и плагины в C# .NET Framework 3.5

Добрый день читатели, я в этой статье не буду заострять внимание на теории дополнений. Все и так знают что такое плагины. Перейдем сразу к практике.


Мы создадим простое Windows Forms приложение, для которого мы потом сделаем дополнение. Дополнение будет иметь свои формы Windows Forms.


1. Создадим новое решение, назовем его AddInTest



2. Переименум проект в HostApplication



3. Добавим библиотке несколько библиотек классов, назовем их:
AddInSideAdapter, AddInView, Contract, HostSideAdapter, HostView.
Должно получиться как на картинке ниже:


4. Начнем с того, что мы обозначим интерфейс для всех дополнений. Каждое дополнение для нашего приложения должно будет поддерживать этот интерфейс.

5. Откроем проект Contract.
6. Удалим из этого проекта класс Class1.
7. Добавим в проект интерфейс, назовем его IExecutionContract

 




8. Добавим ссылку на сборку System.AddIn.Contract



9. Добавим в блок using System.AddIn.Pipeline и using System.AddIn.Contract;
10. Пометим наш интерфейс атрибутом [AddInContract]
11. Для простоты примера, опишем в интерфейсе всего 1 метод ShowForm.
12. Наш интерфейс должен наследовать интерфейс IContract. Этот интерфейс находится в сборке System.AddIn.Contract; 



  
12. На этом наш интерфейс готов. Перейдем к проекту AddInView.
13. Переименуем класс Class1 в ShowFormAddInView.
14. Добавим ссылку на сборку System.AddIn
15. Добавим в блок using System.AddIn.Pipeline
16. Пометим наш абстрактный класс атрибутом [AddInBase]
17. Создадим абстрактный метод ShowForm.

 

18. С этим пока всё. Перейдем к проекту AddInSideAdapter.
19. Переименуем класс Class1 в ShowFormViewToContractAdapter20. Добавим ссылку на сборку System.AddIn, System.AddIn.Contract, Contract и AddInView
21. Добавим в блок using System.AddIn.Pipeline
22. Пометим наш абстрактный класс атрибутом [AddInAdapter]
23. Обозначим, что наш класс ShowFormViewToContractAdapter наследует интерфейсы ContractBase и Contract.IExecutionContract.
24. Далее опишем класс как показано ниже:


25. Добавим новую библиотеку классов, назовем её ShowFormAddIn
26. Добавим ссылку на сборку System.AddIn
27. Переименуем Class1 в ShowFormAddIn.

28. Добавим в этот проект форму Form1.
29. Все остальное напишем как на рисунке ниже.

 



30. Откроем проект HostView.
31. Переименуем класс Class1 в ShowFormHostView.
32. Напишем следующий код:



33. Откроем проект HostSideAdapter. Добавим ссылку на System.AddIn, System.AddIn.Contract, HostView, Contract.
34. Переименуем класс Class1 в ShowFormContractToViewHostAdapter.
35. Код этого класса:



36. Теперь необходимо открыть по-очереди каждый проект, развернуть у него группу Reference и назначить нашим сборкам признак CopyLocal = false. Единственным исключением должен являться проект самого приложения. Но на данном этапе мы никакие ссылки на сборки в него не добавляли.


37. Выберем всё решение (Solution), нажмем на нем правой кнопкой мыши и выберем очистить решение (Clean Solution).

38. Теперь настроим папки. Для использования дополнений и плагинов нам нужно соблюдать требование к структуре папок. Для начала развернем проект HostApplication. Создадим в ней новую папку, назовем её Output.



39. Откроем свойства проекта HostApplication. На вкладке Debug укажем путь (Output path) к новой папке Output.