Scaffold DB2 с EF, работающим вокруг Длина не может быть меньше нуля - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь создать базу данных DB2 с помощью Scaffold-DbContext в Visual Studio, но я попал между двумя проблемами.

Я использую пакеты IBM.EntityFrameworkCore и Microsoft.EtityFrameworkCore.Tools

У меня проблема с поиском версии Microsoft.EtityFrameworkCore.Tools, которая работает.
Следуя приведенным здесь инструкциям
https://www.ibm.com/developerworks/community/blogs/96960515-2ea1-4391-8170-b0515d08e4da/entry/Creating_Entity_Data_Model_using_IBM_Data_Server_providers_for_Entity_Framework_Core?lang=en Microsoft.EntityFrameworkCore.Tools 2.0.0
Должен быть использован. Это имеет смысл, так как использование более высоких версий приводит к ошибке

Метод не найден: 'Void Microsoft.EntityFrameworkCore.Scaffolding.Internal.CSharpDbContextGenerator..ctor (Microsoft.EntityFrameworkCore.Scaffolding.IScaffoldingProviderCodeGorerator Microsoft.deGamerator, .Design.IAnnotationCodeGenerator, Microsoft.EntityFrameworkCore.Scaffolding.Internal.ICSharpUtilities) '

Эта проблема не решается путем установки «Microsoft.EntityFrameworkCore.Design», как предлагают некоторые руководства. Похоже, что это специфическая c проблема DB2, когда библиотека IBM несопоставима с любой версией выше 2.0.0

Проблема с версией 2.0.0 заключается в том, что при создании леса возникает следующая ошибка

System.ArgumentOutOfRangeException: длина не может быть меньше нуля. (Параметр 'length') в IBM.Data.DB2.Core.DB2ConnPool.Open (соединение DB2Connection, String & szConnectionString, DB2ConnSettings & ppSettings, Object & ppConn) в IBM.Data.DB2.Core.DB2Connection.Open () в IBM.EntoreFrawork. Scaffolding.Internal.Db2DatabaseModelFactory.Create (соединение DbConnection, схемы IEnumerable 1 tables, IEnumerable 1) в IBM.EntityFrameworkCore.Scaffolding.Internal.Db2DatabaseModelFactory.Create (строка String connectionString, IEnumerable 1 tables, IEnumerableaffEnt.Inf.Ent.InteF. RelationalScaffoldingModelFactory.Create (схема String connectionString, IEnumerable 1 tables, IEnumerable 1, логическое значение useDatabaseNames) в Microsoft.EntityFrameworkCore.Scaffolding.Internal.ModelScaffolder.Generate (строка String contextName, логическое значение useDataAnnotations, логическое значение overwriteFiles, логическое значение useDatabaseNames) в Microsoft.EntityFrameworkCore.Design.Internal.DatabaseOperations.Sca ffoldContext (строковый поставщик, строковое connectionString, строковый outputDir, строковый dbContextClassName, IEnumerable 1 schemas, IEnumerable 1 таблиц, логическое значение useDataAnnotations, логические overwriteFiles, логическое значение useDatabaseNames) в Microsoft.EntityFrameworkCore.Design.OaffirStringStringStringing Строка dbContextClassName, IEnumerable 1 schemaFilters, IEnumerable 1 tableFilters, логическое значение useDataAnnotations, логическое значение overwriteFiles, логическое значение useDatabaseNames) в Microsoft.EntityFrameworkCore.Design.OperationExecutor.ScaffoldContext. <> C__DisplayCnt. OperationBase. <> C__DisplayClass3_0`1.b__0 () в Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute (действие action)

Эта проблема описана здесь
https://forums.devart.com/viewtopic.php?t=38467#p136664

И, похоже, относится к некоторой ошибке в EF и поле Timestamp.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...