Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

EF6 + PostgreSQL

06.11.18 18:08
EF6 + PostgreSQL
 
Murr патриот
Murr

Похоже, что меня пора списывать в утиль...


Все находится в процессе миграции с Оракла 10 на Постгрее 10.3.

Базы - совершенно другие. Т.е. вероятности обойтись правкой СКЛ - ноль.


По сему - решил за одно соскочить со старой имплементации отчетов и перейти на Ентити.


Имею следующее:

Вин7 х64 СП1.

МС Студио 2015 Ент СП3. Вторая Студия 2017 - не используется.

Есть МС СКЛ, Оракле. Постгрее - на другой машине, ставить - не хочу - и так тяжело.


Часть 1. Драйвера/Провайдеры

Бесплатных драйверов/провайдеров для Постгрее - 1 штука - Npgsql..

Слито и проинсталенно для Студии как адд-он.

Повторная установка - не проходит - пишется все тип-топ.


Часть 2. Подключения.

Подключения - тестировались и вроде работали. Надо будет перепроверить версию Npgsql.

с которой это делалось.

Кроме этого подключения записаны/запомнены в дбФорге студии для Постгрее и там вполне работоспособны.


Часть 3. ОДБЦ.

Хренова биллина фича не показывает ни одного драйвера способного поддерживать коннект к Постгрее.

Была траил-версия от дбФорге - проэкспаирилась. Версия от Нпгскл - не видна,.


Часть 4. Коннект из Студии.

Тут полный облом. Законнектится из Студии к Постгрее у меня не получается.

Никак.

Смотрел ехтентионы для Студии, смотрел варианты установки Нпгскл - базу студия не видит.


Часть 5. Проекты.

Делается обычный проект дллки на базе фрэймворка 4.5.

В проект добавляются пакаджи:

<package id="EntityFramework" version="6.2.0" targetFramework="net45" />
<package id="EntityFramework6.Npgsql" version="3.2.0" targetFramework="net45" />
<package id="Npgsql" version="4.0.3" targetFramework="net45" />
<package id="System.Runtime.CompilerServices.Unsafe" version="4.5.0" targetFramework="net45" />
<package id="System.Threading.Tasks.Extensions" version="4.5.0" targetFramework="net45" />
<package id="System.ValueTuple" version="4.5.0" targetFramework="net45" />

После добавления - вроде все ссылки разрешаются.


Часть 6. Тесты.

Ручками прописана пара юнитов под таблицы и на них тестируется операционистика ЕФ6.

Сплошной файл.

Причем - непонятно почему пользуется КОРЕ - никаких ссылок на КОРЕ не делалось.

Test Name: TestMethod2
Test FullName: TestNuGet.Tests.UnitTest1.TestMethod2
Test Source: TestNuGet.Tests\UnitTest1.cs : line 26
Test Outcome: Failed
Test Duration: 0:00:16.5569137

Result Message:
Test method TestNuGet.Tests.UnitTest1.TestMethod2 threw exception:
System.Data.Entity.Core.ProviderIncompatibleException:
An error occurred accessing the database. This usually means that the connection to the database failed.
Check that the connection string is correct and that the appropriate DbContext constructor is being used to specify it or find it in the application's config file.
See http://go.microsoft.com/fwlink/?LinkId=386386 for information on DbContext and connections.
See the inner exception for details of the failure. ---> System.Data.Entity.Core.ProviderIncompatibleException: The provider did not return a ProviderManifestToken string. ---> System.IO.FileLoadException: Could not load file or assembly 'Npgsql, Version=4.0.2.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)



В общем - непонятно.

Может версии пакаджей надо другие? Но нигде не нашел ссылок в которых бы описали какие нужны.


В общем - головная боль - проще самому написать генератор ентитей, чем заставить это чудо работать...

 

Перейти на