我在VS2010中使用了相同的项目,但是当我切换到VS2013时,我无法再连接到同一个Oracle DB。
到目前为止我采取的步骤:
我可以在VS2013中转到数据连接并连接到我想要的Oracle数据库服务器。所以看起来司机似乎正在运作。
但我不确定为什么我无法连接我的DAL。
我的代码如下:
using (OracleConnection oConn = new OracleConnection(_connString))
{
using (OracleCommand cmd = CreateOracleCommand(oConn, "GET_USERS", CommandType.StoredProcedure))
{
oConn.Open();
_connString在哪里:
<add name="OracleTest" connectionString="Data Source=<SID>;User Id=<user>;Password=<password>;"/>
答案 0 :(得分:2)
ODP.NET Manager驱动程序尝试从以下内容解析数据源TNS:
<oracle.manageddataaccess.client>
部分下的部分(即machine.config
,web.config
)。tnsnames.ora
文件中的数据源别名,位于.NET配置文件中TNS_ADMIN
指定的位置。tnsnames.ora
位于同一目录中的.exe
文件中的数据源别名。tnsnames.ora
的{{1}}文件中的数据源别名
(其中%TNS_ADMIN%
是环境变量设置)。%TNS_ADMIN%
的{{1}}文件中的数据源别名
(其中tnsnames.ora
是环境变量设置)。 检查每个VS2010和VS2013。在某些时候必须有所不同。
更正更新:
根据这一陈述Oracle Managed and TNS Names(由...发布 上面的Alex Keh(产品经理 - Oracle)列表仅适用于ODP.NET托管驱动程序 beta版。
根据官方文件Data Provider for .NET Developer's Guide ODP.NET托管驱动程序使用此路径:
%ORACLE_HOME%\network\admin
部分下的%ORACLE_HOME%
部分中的数据源别名。dataSources
指定位置的<oracle.manageddataaccess.client>
文件中的数据源别名。位置可以包含绝对或相对目录路径。tnsnames.ora
位于同一目录中的TNS_ADMIN
文件中的数据源别名。答案 1 :(得分:0)
我建议不要使用tnsnames文件。在我看来,使用无tns连接更便携。
Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost) (PORT=MyPort)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyOracleSID)));
User Id=myUsername;Password=myPassword;
答案 2 :(得分:0)
如果要使用EF,则需要使用Oracle Tools for VS2013。
我通过将连接字符串从简单服务器/用户名/密码更改为在TNSNAMES.ORA中匹配的连接字符串,再次使ADO连接正常工作。
当您在oracle工具路径中设置TNSNAMES.ORA并开始设置EF连接时,这也会有效。
但是,当我去部署时,我不确定这会给我带来什么麻烦。如果我在建立连接时可以使用EZ Connect设置,我认为这将是一个更好的解决方案。 (我现在无法上班)