我有我连接到我的数据库只是罚款的App.config的连接字符串:不能更改连接字符串(ODP,甲骨文,LINQ到实体)
<add name="SFEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=Oracle.DataAccess.Client;provider connection string="DATA SOURCE=micahs_poc_dev_server.kci;PASSWORD=kierkegaard;PERSIST SECURITY INFO=True;USER ID=KIERKEGAARD"" 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="DATA SOURCE=QA_ETL_TEST_SERVER.COM;PASSWORD=bigshotpassword;PERSIST SECURITY INFO=True;USER ID=CoolidgeCalvin"" 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="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"" providerName="System.Data.EntityClient" />
这基本上反映了我对此服务器的TNS条目。我仍然得到'不存在'的错误。
如果我让服务器名称变得愚蠢,我得到一个TNS错误,说服务器无法识别。所以我很确定它正在拾取我想要的服务器名称并检查它是否存在。
我不认为这是一个表权限/创建问题,因为我可以从具有相同凭据(和相同的TNS文件)的同一台计算机上的两个数据库上很好地查询它们。
[注:我改变了服务器/用户在串/ PW]
[编辑:试图造就了小提琴手,但我没有看到任何消息通过]
Oracle说该表不存在。以将为您的linq查询创建的Sql查询并使用ExecuteStoreQuery()运行它。对我来说,这似乎是一个配置问题 - 要么你没有连接到正确的数据库,要么你连接的数据库与工作的数据库不一致。 – Pawel