ODP.NET Core - Scaffold DB-Context - PullRequest
       19

ODP.NET Core - Scaffold DB-Context

0 голосов
/ 11 сентября 2018

Я работаю с оракулами odp.net core beta 3. В частности, dll - это Oracle.ManagedDataAccess.Core.2.12.0-beta3.Проект заключается в создании веб-API, который находится поверх экземпляра Oracle.

Мой вопрос - поддерживается ли команда "Scaffold-DBContext" этим провайдером.Если так, что я делаю не так ... Я попытался использовать строку подключения, подобную следующей:

Data Source={databasename}/{TNS}.domain.local; User ID={UserName};Password={Password};

И фактическая команда в терминале диспетчера пакетов

Scaffold-DbContext Data Source={databasename}/{TNS}.domain.local; User ID={UserName};Password={Password};" Oracle.ManagedDataAccess -OutputDir Models -Tables {TableName}

Я получаю следующую ошибку, которая предполагает, что он не может найти атрибут DesignTimeServiceAttribute в сборке поставщика.

У меня также есть ссылка на Microsoft.EntityFrameworkCore.Tools (2.2.0), которая включает в себя инструменты дизайна.

ОШИБКА

    System.InvalidOperationException: Unable to find expected assembly attribute named DesignTimeProviderServicesAttribute in provider assembly Oracle.ManagedDataAccess. This attribute is required to identify the class which acts as the design-time service provider factory.
   at Microsoft.EntityFrameworkCore.Design.Internal.DesignTimeServicesBuilder.ConfigureProviderServices(String provider, IServiceCollection services, Boolean throwOnError)
   at Microsoft.EntityFrameworkCore.Design.Internal.DesignTimeServicesBuilder.Build(String provider)
   at Microsoft.EntityFrameworkCore.Design.Internal.DatabaseOperations.ScaffoldContext(String provider, String connectionString, String outputDir, String outputContextDir, String dbContextClassName, IEnumerable`1 schemas, IEnumerable`1 tables, Boolean useDataAnnotations, Boolean overwriteFiles, Boolean useDatabaseNames)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.ScaffoldContextImpl(String provider, String connectionString, String outputDir, String outputDbContextDir, String dbContextClassName, IEnumerable`1 schemaFilters, IEnumerable`1 tableFilters, Boolean useDataAnnotations, Boolean overwriteFiles, Boolean useDatabaseNames)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.ScaffoldContext.<>c__DisplayClass0_1.<.ctor>b__0()
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass3_0`1.<Execute>b__0()
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)

Ответы [ 2 ]

0 голосов
/ 30 июля 2019

Мне удалось создать его с помощью

scaffold-dbcontext "Источник данных = (ОПИСАНИЕ = (АДРЕС = (ПРОТОКОЛ = TCP) (ХОСТ = 1.1.1.1) (ПОРТ = 1521)) (CONNECT_DATA = (SERVICE_NAME = MYdb))); Сохранять информацию о безопасности = True; идентификатор пользователя = MYUSER; пароль = mypass; "Oracle.EntityFrameworkCore

Но это бесполезный беспорядок.тонн ошибок

Не удалось очистить внешний ключ 'XX.TABLE1 (USER_ID, USER_ID)'.Ключ для «ID, ID» не найден в основном типе сущности «Aspnetusers».

Похоже, Даппер - мой друг ...

0 голосов
/ 25 октября 2018

У меня возникли проблемы, с которыми вы столкнулись даже после загрузки драйвера ODP.NET Core для производства (2.18.3, выпущенного 20 сентября 2018 года и доступного в nuget по адресу https://www.nuget.org/packages/Oracle.ManagedDataAccess.Core/).

Я обратился за помощью к сообществу Oracle. Добрый человек ответил, что есть еще одна загадка, если мы хотим иметь готовый доступ к доброте, такой как «UseOracle». Это поставщик Oracle для Entity Framework Core.на https://community.oracle.com/thread/4180739.

Насколько я знаю и основываясь на его ответе, единственным другим способом его использования является способ, описанный в Справочном центре Oracle, Начало работы с ODP.NET Core (https://www.oracle.com/webfolder/technetwork/tutorials/obe/db/dotnet/ODPNET_Core_get_started/index.html).

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