0

我有一个 App.config 连接字符串,可以很好地将我连接到我的数据库:

<add name="SFEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=Oracle.DataAccess.Client;provider connection string=&quot;DATA SOURCE=micahs_poc_dev_server.kci;PASSWORD=kierkegaard;PERSIST SECURITY INFO=True;USER ID=KIERKEGAARD&quot;" providerName="System.Data.EntityClient" />

我将 ODP 引用与 ADO.NET / Linq to Entities 方法结合使用。

当我想连接到我们网络上的不同数据库(具有相同架构)时,问题就来了。

<add name="SFEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=Oracle.DataAccess.Client;provider connection string=&quot;DATA SOURCE=QA_ETL_TEST_SERVER.COM;PASSWORD=bigshotpassword;PERSIST SECURITY INFO=True;USER ID=CoolidgeCalvin&quot;" providerName="System.Data.EntityClient" />

当我只是更改服务器的名称时,我收到此错误:ORA-00942:表或视图不存在

我实际上可以在它引发异常之前运行几行代码:

        using (SFEntities ctx1 = new SFEntities())
        {
            var ds = ctx1.Connection.DataSource; // debugger: QA_ETL_TEST_SERVER.COM
            var db = ctx1.Connection.Database;
            var dstate = ctx1.Connection.State;
            var dsite = ctx1.Connection.Site;
            ctx1.Connection.Open();

            SF_CHANGE_ORDER cotest = new SF_CHANGE_ORDER();
            cotest.DELETE_FLAG = "D";
            var result = (from cp in ctx1.SF_CLIENT_PROJECT
                          select cp).ToList();  // <---   error here!

我还尝试将格式更改为:

<add name="SFEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=Oracle.DataAccess.Client;provider connection string=&quot;DATA SOURCE=(DESCRIPTION =(ADDRESS=(PROTOCOL=TCP)(HOST=155.32.75.11)(PORT=65550))(ADDRESS=(PROTOCOL=TCP)(HOST=155.32.75.11)(PORT=65550))(CONNECT_DATA=(SERVICE_NAME=QA_ETL_TEST_SERVER.COM)(FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC)(RETRIES=180)(DELAY=5))));PASSWORD=bigshotpassword;PERSIST SECURITY INFO=True;USER ID=CoolidgeCalvin&quot;" providerName="System.Data.EntityClient" />

这基本上反映了我为此服务器拥有的 TNS 条目。我仍然收到“不存在”错误。

如果我使服务器名称变得愚蠢,我会收到一个 TNS 错误,指出服务器无法识别。所以我很确定它正在获取我想要的服务器名称并检查它是否存在。

我不认为这是一个表权限/创建问题,因为我可以在具有相同凭据(和相同 TNS 文件)的同一台机器上的两个数据库上很好地查询它们。

[注意:我更改了字符串中的服务器/用户/密码]

[编辑:尝试调出提琴手,但我没有看到任何消息通过]

4

1 回答 1

0

啊... VisualStudio 将模式名称隐藏在 Model .edmx 文件中。要使其工作,您必须以某种方式打开模型文件(使用记事本或搜索项目中的所有文档)并手动更改模式名称。嘘!

于 2012-10-29T19:12:56.900 回答