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

EF6 + PostgreSQL

714  
Murr патриот06.11.18 18:08
Murr
06.11.18 18:08 

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


Все находится в процессе миграции с Оракла 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)



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

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


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


#1 
Срыв покровов коренной житель07.11.18 18:39
NEW 07.11.18 18:39 
в ответ Murr 06.11.18 18:08

ты как мой коллега, ему выдаёт ошибку FileNotFoundException, он не знает, что делать.

Вангую на то, что при компиляции твоего проекта с тестами не копируется автоматом Npgsql.dll

Скопируй его из проекта, где у тебя находится DBcontext от Entity Framework


#2 
Срыв покровов коренной житель07.11.18 18:41
NEW 07.11.18 18:41 
в ответ Murr 06.11.18 18:08

и ещё

Для генерации отчётов EF не очень годится

Точнее сделать можно, но или запросы будто генерироваться не самые лучшие или запаришься переписывать Linq так, чтобы SQL выходил удобоваримый.


#3 
Murr патриот07.11.18 23:34
Murr
NEW 07.11.18 23:34 
в ответ Срыв покровов 07.11.18 18:39

Скопируй его из проекта

-----

Вообще-то - запихнуты в GAC.


ты как мой коллега

-----

Вообще-то, Я просто в конце рабочего дня записал проблемы которые надо решать. Список дел на завтра. Даже не смотрел что там.

Но либа в ГАКе не находится. В инете есть рекомендации покласть ее в папку сецдллок Студии. Надо подумать над этим.

И - да - проблема была в ненаходимости либы. Решилась - копированием... хотя это и не правильно - должна браться из GAC.


Тепрь надо думать над тем, почему при простом выборе по первичному ключу выпадает ошибка по неправильной реляции. Это при том, что в схеме - одна единственная таблица и нет реляций. Но это опять завтра.


Точнее сделать можно, но или запросы будто генерироваться не самые лучшие

-----

Блин, знал бы кто как мало меня сейчас беспокит качество запросов.

Мне бы хоть как-то вынуть бизнес-логику и ДАЛ из ГУЯ... и заменить ДАЛ ОРМом. Только-только чтобы у меня имелся ОДИН вариант обьекта Заказ и он работал во всех 20-30 приложениях. А то на сегодня - переработано где-то 10-15% кода - вариаций этих Заказов штук 80-т... и в каждом - своя система рассчетов... и они - не совместимы и не заменяемы. А запросы... запросы можно ковырять когда за остальным кодом следить не надо...

#4 
Murr патриот08.11.18 11:42
Murr
NEW 08.11.18 11:42 
в ответ Murr 07.11.18 23:34

Блин, да как же это делается то?


Есть база ПостгреСкл.

Есть настроенные ОДБЦ соединения для х64 и х32 с ПостгреСкл базой.

Есть Нпгскл, Нпгскл.ЕнтитиФрамеворк.

Есть биллина поделка ЕФ6.


есть описание для Оракла https://csharp.today/entity-framework-6-database-first-wit... - сделано все тоже самое, но для ПостгреСкл.


Как заставить Студию использовать ОДБЦ соединение или Постгрее-драйвер для построения модели?

В самой студии соединение создается и работает. Осталось только заставить строить модель. Блин, никак - только МС СКЛ...

#5 
Срыв покровов коренной житель09.11.18 11:17
NEW 09.11.18 11:17 
в ответ Murr 07.11.18 23:34

сори, но твои высеры читать вообще желания нет

#6