更改连接字符串.NET Oracle错误

3

我在.NET Web应用程序中使用Oracle Data Provider for .NET(Oracle ODP.NET)连接数据库,并使用Entity Framework。

当我创建实体数据模型时,在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"。该应用程序未连接到数据库。

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

有没有办法不重新生成实体数据模型,而不必重置生产数据库的连接?


我不明白你在问什么。你的生产数据模型和开发模型不同,你想从生产模型生成实体模型吗? - GTG
不,我在开发环境和生产环境中使用相同的数据库。当我从不同的数据库生成实体模型时,我得到了相同的结果。我的问题是:当我生成实体模型时,是否有任何地方Visual Studio会插入数据库名称(或数据源名称)?因为如果我从开发数据库生成模型,当我在生产环境中部署应用程序并进行第一次查询时,我会得到异常“表或视图不存在”。谢谢。 - user1239944
同时,Web.config 中的连接字符串也是相同的。 - user1239944
2个回答

2

我解决了!!!

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

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

因此,这些模式具有不同的名称,而在开发环境中生成的实体模型与生产环境中不同。

谢谢大家!!!

再见。


我曾经遇到过同样的情况。我可以通过将edmx文件打开到XML编辑器中,查找/替换Schema属性值,然后重新生成实体来在环境之间切换。虽然不太美观,但是可行。 - Denis M. Kitchen

0

“Table or view not found”错误可能有两种情况:

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

检查最简单的方法是以使用者身份通过像PL/SQL Developer或SQL Navigator这样的工具连接到数据库,并尝试从表中进行选择。 您也可以作为具有许多特权的用户连接到数据库并查询系统视图。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接