ODP.NET Core-脚手架数据库上下文

LCa*_*way 4 odp.net asp.net-core

我正在使用oracles odp.net core beta3。具体地说,该dll是Oracle.ManagedDataAccess.Core.2.12.0-beta3。该项目将创建一个位于oracle实例之上的Web api。

我的问题-此提供程序是否支持命令“ Scaffold-DBContext”。如果是这样,那我在做什么错...我尝试使用类似于以下内容的连接字符串。

Data Source={databasename}/{TNS}.domain.local; User ID={UserName};Password={Password};
Run Code Online (Sandbox Code Playgroud)

和实际的命令在Package Manager终端中

Scaffold-DbContext Data Source={databasename}/{TNS}.domain.local; User ID={UserName};Password={Password};" Oracle.ManagedDataAccess -OutputDir Models -Tables {TableName}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误,这表明它无法在提供程序程序集中喜欢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)
Run Code Online (Sandbox Code Playgroud)

小智 5

即使下载了用于生产的ODP.NET Core驱动程序(2.18.3,已于2018年9月20日发布,也可从nuget获取,网址为https://www.nuget.org/packages/Oracle),我仍然遇到了您遇到的问题。 ManagedDataAccess.Core /)。

我联系了Oracle社区寻求帮助。一个善良的灵魂回答说,如果我们想立即获得善良,例如“ UseOracle”,那还有另一个难题。它是Entity Framework Core的Oracle提供程序。请参阅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)。


Too*_*kit 5

我设法使用它来搭建它

scaffold-dbcontext“数据源=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=1.1.1.1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=MYdb)));持久安全信息=True;用户ID =MYUSER;密码=mypass;” Oracle.EntityFrameworkCore

但这是一个无用的混乱。大量错误

无法搭建外键“XX.TABLE1(USER_ID,USER_ID)”。在主体实体类型“Aspnetusers”中找不到“ID,ID”的键。

看来 Dapper 是我的朋友...