【问题标题】:Change connection string .NET Oracle error更改连接字符串 .NET Oracle 错误
【发布时间】:2012-12-04 09:46:58
【问题描述】:

我在 .NET Web 应用程序中使用 Oracle Data Provider for .NET (Oracle ODP.NET),并且我 使用实体框架连接到数据库。

当我创建实体数据模型时,在 Web.config 中,VS2010 创建一个像这样的连接字符串:

<add name="eBoardingEntities" connectionString="metadata=res://*/Models.eBoardingModel.csdl|res://*/Models.eBoardingModel.ssdl|res://*/Models.eBoardingModel.msl;provider=Oracle.DataAccess.Client;provider connection string=&quot;DATA SOURCE=emobile;PASSWORD=CHECKIN_USER;PERSIST SECURITY INFO=True;USER ID=CHECKIN_USER&quot;" providerName="System.Data.EntityClient" /></connectionStrings>

但是当我在生产环境中部署应用程序时,我更改了"DATA SOURCE=emobileProduction"中的数据源。

生产环境中的应用程序不工作。错误应用程序是:"Table or view not found"。应用程序未连接到数据库。

为了使其工作,我需要取消实体数据模型并通过与生产数据库的新连接重新生成它。

在无需重置与生产数据库的连接的情况下不重新生成实体数据模型有什么帮助吗?

【问题讨论】:

  • 我不明白你在问什么。您的生产数据模型是否与开发模型不同,并且您想从生产模型生成实体模型?
  • 不,我在开发环境和生产环境中拥有相同的数据库。当我从不同的数据库生成实体模型时,我得到了相同的结果。我的问题是:当我生成实体模型时,Visual Studio 在哪里插入数据库名称(或数据源名称)????因为如果我从开发数据库生成模型,当我在生产环境中部署应用程序时,首先在数据库上查询我得到异常“表或视图不存在”。坦克。
  • Web.config中的连接字符串也是一样的。

标签: .net database oracle connection


【解决方案1】:

我解决了!!!

在 oracle 中,用户的名称是模式的名称。

在生产中,我有用户 CHECKIN,而在开发环境中,用户是 CHECKIN_USER。

因此,方案名称不同,在开发环境中生成的实体模型与生产环境不同。

大家加油!!!

再见。

【讨论】:

  • 我也有同样的情况。我可以通过在 XML 编辑器中打开 edmx 文件并查找/替换 Schema 属性值,然后重新生成实体来在环境之间来回切换。丑陋,但有效。
【解决方案2】:

“找不到表或视图”错误可能意味着两件事:

  • 表或视图确实不在数据库中。我怀疑你不是这种情况。
  • 连接到数据库的用户没有使用表的权限。如果用户没有直接或通过角色被授予对表的 SELECT 权限,则用户将无法从中进行选择。这是一个常见的疏忽,我建议您检查一下。

检查它的最简单方法是通过 PL/SQL Developer og SQL Navigator 之类的工具作为您正在使用的用户连接到数据库,然后尝试从表中进行选择。 您还可以以具有大量权限的用户身份连接到数据库并查询系统视图。

EF 的连接字符串对我来说似乎可以用于生产。您在 web.config 中设置它,最重要的部分是数据源和用户规范。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-08
    • 2013-12-14
    • 1970-01-01
    • 2011-08-17
    • 2013-02-11
    相关资源
    最近更新 更多