web-dev-qa-db-ja.com

ODP.NETCore-スキャフォールドDB-コンテキスト

私はoraclesodp.netコアベータ3を使用しています。具体的には、dllはOracle.ManagedDataAccess.Core.2.12.0-beta3です。このプロジェクトは、Oracleインスタンスの上に配置されるWebAPIを作成することです。

私の質問-コマンド「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)
4
LCaraway

ODP.NET Coreドライバーを本番用にダウンロードした後でも(2.18.3、2018年9月20日にリリースされ、nugetから入手可能 https://www.nuget.org/))、発生した問題が発生しました。 packages/Oracle.ManagedDataAccess.Core / )。

Oracleコミュニティに連絡して支援を求めました。 「UseOracle」などの優れた機能にすぐにアクセスしたい場合は、別のパズルのピースがあると親切な人が答えました。これは、Entity FrameworkCoreのOracleプロバイダーです。 https://community.Oracle.com/thread/4180739 のスレッドを参照してください。

私の知る限り、彼の回答に基づいて、これを使用する他の唯一の方法は、Oracleヘルプセンターの「ODP.NETCore入門」( https://www.Oracle.com/webfolder))で説明されている方法です。 /technetwork/tutorials/obe/db/dotnet/ODPNET_Core_get_started/index.html )。

6
Elsa

なんとか足場を作って

足場-dbcontext "データソース=(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(ホスト= 1.1.1.1)(PORT = 1521))(CONNECT_DATA =(SERVICE_NAME = MYdb)));永続的なセキュリティ情報= True;ユーザーID = MYUSER; Password = mypass; " Oracle.EntityFrameworkCore

しかし、それは使用できない混乱です。たくさんのエラー

外部キー 'XX.TABLE1(USER_ID、USER_ID)'をスキャフォールディングできませんでした。 「ID、ID」のキーがプリンシパルエンティティタイプ「Aspnetusers」で見つかりませんでした。

ダッパーは私の友達のようです...

1
Toolkit