使用 EF Core 脚手架 Oracle 数据库失败并出现登录被拒绝错误
Scaffolding an Oracle database with EF Core failing with logon denied error
我正在尝试从 Oracle 数据库构建一些 类 用于 .NET Core Web API。我已经安装了以下 nuget 包:
Oracle.EntityFrameworkCore - v2.18.0-beta3
Oracle.ManagedDataAccess.Core - v2.18.6
我已经尝试与这两个提供商建立脚手架,但我遇到了两个不同的错误。
脚手架命令 - Scaffold-DbContext "Data Source=(DESCRIPTION=(ADDRESS_LIST= (ADDRESS=(COMMUNITY=tcpcom.world)(PROTOCOL=tcp)(HOST={Host})(PORT={Port})))(CONNECT_DATA=(SID={SID}))); User ID={UserId};Password={Password}" {Provider} -o Models
- Oracle.EntityFrameworkCore脚手架错误
ORA-01017: invalid username/password; logon denied
- 我已经确认我的登录信息是正确的
- Oracle.ManagedDataAccess脚手架错误
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.
- 我试过实现
IDesignTimeDbContextFactory<T>
接口,但没有成功
我今天尝试了无数 google 的事情,但都没有成功。这可能是 Oracle 驱动程序的问题吗?
编辑
我创建了一个 .NET Core 控制台应用程序,安装了 EF Core 和 Oracle.EntityFrameworkCore 并尝试搭建脚手架,但遇到了同样的错误。还通过使用它来创建 DbContext 并查询 table,返回记录来确认连接字符串是正确的。
问题原来是密码中的美元符号 $
。 VS Package Manager控制台提供了PowerShell接口,而$
是PowerShell中的保留符号,所以需要在$
前加一个反引号`
进行转义。
Answer 来自 Oracle 社区论坛。
我正在尝试从 Oracle 数据库构建一些 类 用于 .NET Core Web API。我已经安装了以下 nuget 包:
Oracle.EntityFrameworkCore - v2.18.0-beta3
Oracle.ManagedDataAccess.Core - v2.18.6
我已经尝试与这两个提供商建立脚手架,但我遇到了两个不同的错误。
脚手架命令 - Scaffold-DbContext "Data Source=(DESCRIPTION=(ADDRESS_LIST= (ADDRESS=(COMMUNITY=tcpcom.world)(PROTOCOL=tcp)(HOST={Host})(PORT={Port})))(CONNECT_DATA=(SID={SID}))); User ID={UserId};Password={Password}" {Provider} -o Models
- Oracle.EntityFrameworkCore脚手架错误
ORA-01017: invalid username/password; logon denied
- 我已经确认我的登录信息是正确的
- Oracle.ManagedDataAccess脚手架错误
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.
- 我试过实现
IDesignTimeDbContextFactory<T>
接口,但没有成功
- 我试过实现
我今天尝试了无数 google 的事情,但都没有成功。这可能是 Oracle 驱动程序的问题吗?
编辑
我创建了一个 .NET Core 控制台应用程序,安装了 EF Core 和 Oracle.EntityFrameworkCore 并尝试搭建脚手架,但遇到了同样的错误。还通过使用它来创建 DbContext 并查询 table,返回记录来确认连接字符串是正确的。
问题原来是密码中的美元符号 $
。 VS Package Manager控制台提供了PowerShell接口,而$
是PowerShell中的保留符号,所以需要在$
前加一个反引号`
进行转义。
Answer 来自 Oracle 社区论坛。