我有一个使用.NET 4.0和EF6的应用程序,这对SQL Server运行正常,现在,我需要以同样的方式使用Oracle BD。 我在这个有5个表的项目中有一个模型,当我将这个项目连接到这个数据库迁移时,在其中添加这个新闻表。
现在,我把所有引用都提到了Oracle。
Oracle.DataAccess.dll
Oracle.DataAccess.EntityFramework
Oracle.ManagedDataAccess.EntityFramework
并将其放入web.config
<section name="Oracle.ManagedDataAccess.Client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
我正在使用这个conn字符串
<add name="ChatContext" connectionString="Data Source=serversql; Initial Catalog=database;uid=user;password=pass;" providerName="System.Data.SqlClient"/>
现在我正在尝试
<add name="ChatContext" connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracleserver)(PORT=1521))(CONNECT_DATA=SERVICE_NAME=oracledb)));User Id=user;Password=pass;" providerName = "Oracle.ManagedDataAccess.Client"/>
我有一个&#34; ChatContext&#34;我的文档中的数据库并将其删除到迁移生成一个新的上下文文件。
当我尝试执行我的代码时出现此错误:
An error occurred accessing the database. This usually means that the connection to the database failed. Check that the connection string is correct and that the appropriate DbContext constructor is being used to specify it or find it in the application's config file.
我生成一个新的MVC项目来检查conn字符串是否正常,并且可以连接到db,它是。
<add name="Entities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=Oracle.ManagedDataAccess.Client;provider connection string="data source=oracledb;password=pass;persist security info=True;user id=user"" providerName="System.Data.EntityClient" /></connectionStrings>
答案 0 :(得分:2)
我认为你只需要改变你的连接字符串:
"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracleserver)(PORT=1521))(CONNECT_DATA=SERVICE_NAME=oracledb)));User Id=user;Password=pass;"
...改为:
"Data Source=oracledb;User Id=user;Password=pass;"
Data Source
只需要设置为服务名称。