【问题标题】:Oracle DataBase First approach doesn't work if I change user in webconfig ASP.NET MVC如果我在 Web 配置 ASP.NET MVC 中更改用户,Oracle 数据库优先方法不起作用
【发布时间】:2016-10-24 20:01:55
【问题描述】:

我使用 Oracle 的 DataBase First 方法制作了应用程序(以这种方式 https://www.youtube.com/watch?v=tk_EDjTzZCE)

一切正常。但是,如果我在 connectionString 中更改 userId 和密码(因为我想使用另一个数据库),那么应用程序将无法工作。我有一个错误:ORA-00942: table or view does not exist 所以应用程序可以连接到数据库,但看不到表?

例如:

<add name="DbEntities" connectionString="metadata=res://*/DAL.DbModel.csdl|res://*/DAL.DbModel.ssdl|res://*/DAL.DbModel.msl;provider=Oracle.ManagedDataAccess.Client;provider connection string=&quot;DATA SOURCE=someapp_first.amazonaws.com:1521/ORCLBK;PASSWORD=apple123;USER ID=FRUIT&quot;" providerName="System.Data.EntityClient" />

<add name="DbEntities" connectionString="metadata=res://*/DAL.DbModel.csdl|res://*/DAL.DbModel.ssdl|res://*/DAL.DbModel.msl;provider=Oracle.ManagedDataAccess.Client;provider connection string=&quot;DATA SOURCE=someapp_second.amazonaws.com:1521/ORCL2;PASSWORD=apple123;USER ID=FRUIT&quot;" providerName="System.Data.EntityClient" />

<add name="DbEntities" connectionString="metadata=res://*/DAL.DbModel.csdl|res://*/DAL.DbModel.ssdl|res://*/DAL.DbModel.msl;provider=Oracle.ManagedDataAccess.Client;provider connection string=&quot;DATA SOURCE=someapp_third.amazonaws.com:1521/ORCL3;PASSWORD=wege123;USER ID=POTATO&quot;" providerName="System.Data.EntityClient" />

每个数据库都是在同一台服务器上创建的(当然是相同的结构)。应用程序将在第 1 和第 2 连接字符串上正常工作,但第 3 次将无法正常工作。因为还有另一个 UserId/Password。

发生了什么事?


@编辑

新线索。如果我把断点放在 var = data.DB_USER.ToList();

我可以看到查询:

    {SELECT 
"Extent1"."ID" AS "ID", 
"Extent1"."FIRST_NAME" AS "FIRST_NAME", 
"Extent1"."LAST_NAME" AS "LAST_NAME", 
"Extent1"."DESCRIPTION" AS "DESCRIPTION", 
"Extent1"."NOTES" AS "NOTES", 
"Extent1"."DEFAULT_CUSTOMER_MODULO" AS "DEFAULT_CUSTOMER_MODULO", 
"Extent1"."VERIFICATION" AS "VERIFICATION", 
"Extent1"."STATUS" AS "STATUS", 
"Extent1"."PIN" AS "PIN"
FROM "FRUIT"."DB_USER" "Extent1"}

检查最后一行。有FRUIT 而不是POTATO。所以查询是错误的。如果我更改了连接字符串,为什么 VS 使用旧的 SCHEMA。我使用的是第 3 个而不是第 1 个连接字符串。

【问题讨论】:

  • 也许您尝试使用的用户没有查看某些表格的权限,因此它们似乎“丢失”。要进行验证,请使用相同的凭据连接到数据库并尝试选择/使用 EF 抱怨的表。
  • 一切都很好,因为我使用实体向导(如 youtube 教程)再次创建了模型,但我使用了来自第三个 connectionString 的数据并且应用程序工作正常。但是现在第 1 和第 2 没有...

标签: asp.net asp.net-mvc oracle entity-framework


【解决方案1】:

迪皮克斯

在这种情况下,我将尝试通过创建一个单独的控制台应用程序来分离或本地化问题,在该应用程序中我将尝试仅访问有问题的连接并测试它是否正常工作。

这是第一步,我们可以尝试结合主应用程序找出问题所在

希望这会有所帮助,

普拉文·拉朱

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-22
  • 1970-01-01
  • 2016-03-31
相关资源
最近更新 更多