11 / 10 / 3
Регистрация: 27.02.2013
Сообщений: 53
|
|
1 | |
IBM DB2, EntityFramework 6, VS 2015, ошибка конфигурации02.03.2020, 17:03. Показов 6275. Ответов 10
Есть VS2015 с установленным EntityFramework 6, работает с базой DB2. После переустановки всей DB2 на машине, попытка подключиться к БД и выбрать из неё данные стала выдавать следующую ошибку:
Сообщение об ошибке синтаксического анализатора: Ошибка при создании обработчика раздела конфигурации для system.data: На столбец "InvariantName" наложено ограничение по уникальности. Значение "IBM.Data.DB2" уже имеется. Ошибка источника: Строка 122: </system.codedom> Строка 123: <location path="." inheritInChildApplications="false"> Строка 124: <system.data> Строка 125: <DbProviderFactories> Строка 126: <add name="IBM DB2 .NET Data Provider" invariant="IBM.Data.DB2" description="IBM DB2 Data Provider for .NET Framework 4.0" type="IBM.Data.DB2.DB2Factory, IBM.Data.DB2, Version=9.7.4.4, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/> Исходный файл: ***\web.config Строка: 124 Информация о версии: Платформа Microsoft .NET Framework, версия:4.0.30319; ASP.NET, версия:4.7.2114.0 web.config приложения, куда ссылается ошибка: Кликните здесь для просмотра всего текста
<location path="." inheritInChildApplications="false"> <system.data> <DbProviderFactories> <add name="IBM DB2 .NET Data Provider" invariant="IBM.Data.DB2" description="IBM DB2 Data Provider for .NET Framework 4.0" type="IBM.Data.DB2.DB2Factory, IBM.Data.DB2, Version=9.7.4.4, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/> </DbProviderFactories> </system.data> </location> machine.config, что находится а каталоге ***\Framework64\v4.0.30319\Config\ имеет такие строки: Кликните здесь для просмотра всего текста
<system.data> <DbProviderFactories> <add name="IBM DB2 for i .NET Provider" invariant="IBM.Data.DB2.iSeries" description=".NET Framework Data Provider for IBM i" type="IBM.Data.DB2.iSeries.iDB2Factory, IBM.Data.DB2.iSeries, Version=12.0.0.0, Culture=neutral, PublicKeyToken=9cdb2ebfb1f93a26"/> <add name="Microsoft SQL Server Compact Data Provider" invariant="System.Data.SqlServerCe.3.5" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/> <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite, Version=1.0.66.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/> <add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/> <add name="IBM DB2 .NET Data Provider" invariant="IBM.Data.DB2" description="IBM DB2 Data Provider for .NET Framework 4.0" type="IBM.Data.DB2.DB2Factory, IBM.Data.DB2, Version=9.7.4.4, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/> <add name="IBM Informix .NET Data Provider" invariant="IBM.Data.Informix" description="IBM Informix Data Provider for .NET Framework 4.0" type="IBM.Data.Informix.IfxFactory, IBM.Data.Informix, Version=9.7.4.4, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/> <add name="IBM DB2 .NET Data Provider 9.7.6" invariant="IBM.Data.DB2.9.7.6" description="IBM DB2 Data Provider 9.7.6 for .NET Framework 4.0" type="IBM.Data.DB2.DB2Factory, IBM.Data.DB2.9.7.6, Version=9.7.6.4, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/> <add name="IBM Informix .NET Data Provider 9.7.6" invariant="IBM.Data.Informix.9.7.6" description="IBM Informix Data Provider 9.7.6 for .NET Framework 4.0" type="IBM.Data.Informix.IfxFactory, IBM.Data.Informix.9.7.6, Version=9.7.6.4, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/> <add name="FirebirdClient Data Provider" invariant="FirebirdSql.Data.FirebirdClient" description=".NET Framework Data Provider for Firebird" type="FirebirdSql.Data.FirebirdClient.FirebirdClientFactory, FirebirdSql.Data.FirebirdClient, Version=4.10.0.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c"/></DbProviderFactories> </system.data> Мне удалось найти схожие ситуации, однако в них речь шла о том, что в machine.config есть строки-дубли. Таковых не заметил. В какую сторону смотреть, товарищи?
0
|
02.03.2020, 17:03 | |
Ответы с готовыми решениями:
10
ibm db2 расчёт производных параметров Подключение к БД созданной в IBM db2 express-c из VS IBM DB2 запрос на связывание нескольких таблиц Администратор баз данных IBM DB2 (Москва, м.Войковская) |
11 / 10 / 3
Регистрация: 27.02.2013
Сообщений: 53
|
|
19.03.2020, 11:53 [ТС] | 2 |
В разделе <DbProviderFactories> удалял строку с invariant="IBM.Data.DB2".
Если оставить её только в одном из источников - machine.config или web.config приложения, то при попытке обратиться к контексту БД получается новый результат: Поле не найдено: "DB2ConnSettings._bEnableEFCaseSensitivity". Сведения об исключении: System.MissingFieldException: Поле не найдено: "DB2ConnSettings._bEnableEFCaseSensitivity".
0
|
11 / 10 / 3
Регистрация: 27.02.2013
Сообщений: 53
|
|
11.08.2021, 16:20 [ТС] | 3 |
И так, продолжаем. Используем EF6, IBM.DB2 и IBM.DATA.DB2.EntityFramework, обращаемся к БД и получаем:
поле не найдено: "DB2ConnSettings._bEnableEFCaseSensitivity". При помощи ILDASM и просмотра метаданных выявлено странное: указанное поле DB2ConnSettings._bEnableEFCaseSensitivity находится в IBM.DATA.DB2.EntityFramework.dll, однако Visual Studio упрямо твердит - Вызвано исключение: "System.MissingFieldException" в EntityFramework.dll. Подключение dll проходит успешно - смотрел в утилите Fuslogvw.exe, которая отслеживает привязки сборок. Кому интересно, то вот здесь детали: https://docs.microsoft.com/en-... dfrom=MSDN Вопрос переходит в плоскость: почему VS ищет поле в совершенно другой DLL? Кстати, они обе (IBM.DATA.DB2.EntityFramework.dll и EntityFramework.dll) используют частичную привязку. WRN: Для сборки была указана информация о частичной привязке: WRN: Имя сборки: IBM.Data.DB2.EntityFramework | Идентификатор домена: 2 WRN: Частичная привязка осуществляется в том случае, если предоставлена только часть отображаемого имени сборки. WRN: Это может привести к загрузке редактором связей неверной сборки. WRN: Рекомендуется предоставить полное текстовое удостоверение для сборки,
0
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|
11.08.2021, 23:35 | 4 |
0
|
11 / 10 / 3
Регистрация: 27.02.2013
Сообщений: 53
|
|
16.08.2021, 13:39 [ТС] | 5 |
Удалил дефолтную строку из web.config:
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> Внутри перехваченного исключения вижу InnerException внутри InnerException и его source теперь ibm.data.db2.entityFramework. Исключение - missing field exception. Однако, первый InnerException сводится к "The provider did not return a ProviderManifestToken string." Message: "An error occurred accessing the database. This usually means that the connection to the database failed." Добавлено через 2 часа 26 минут Обратился к объекту Database (System.Data.Common.DbConnection), внутри: CurrentTransaction = "base.Database.CurrentTransaction" выдал исключение типа "System.Data.Entity.Core.ProviderIncompatibleException" Будем смотреть.
0
|
11 / 10 / 3
Регистрация: 27.02.2013
Сообщений: 53
|
|
17.08.2021, 08:40 [ТС] | 6 |
Есть подозрение, что IIS на сервере не цепляется к БД.
Приложение работает, но "An error occurred accessing the database. This usually means that the connection to the database failed." Пока проверяю это.
0
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|
18.08.2021, 00:12 | 7 |
0
|
11 / 10 / 3
Регистрация: 27.02.2013
Сообщений: 53
|
|
18.08.2021, 08:57 [ТС] | 8 |
Не так серьезно, как ты. Ещё что ни будь спросишь?
0
|
12309 / 8672 / 1310
Регистрация: 21.01.2016
Сообщений: 32,602
|
|
19.08.2021, 09:32 | 9 |
Shambler-AdMec, вообще, человек верное замечание сделал. IIS - это веб-сервер, который ни про какие базы не знает.
0
|
11 / 10 / 3
Регистрация: 27.02.2013
Сообщений: 53
|
|
30.09.2021, 11:16 [ТС] | 10 |
Установил DB2 версии 11.
Задал её как инстанс по-умолчанию. Задал прилагающийся клиентский интерфейс баз данных так же по умолчанию. Заработало.
0
|
01.10.2021, 12:57 | 11 |
Сначала сделать <clear /> потом <add...>
Но, как мы понимаем все провайдеры удаляются и нужно будет заводить явным видом. НО! Как мы понимаем можно просто взять и сделать <remove key="IBM.Data.DB2" />
0
|
01.10.2021, 12:57 | |
01.10.2021, 12:57 | |
Помогаю со студенческими работами здесь
11
HTML-файл с VBS-кодом для соединения с базой IBM DB2 IBM обещает голографические телефоны к 2015 году Свойства конфигурации в Visual Studio 2015 community EntityFramework ошибка Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |