每当我尝试运行此查询时,我都会收到以下错误:
var query = from u in StageEntity.STAGINGINTERACTIONPOINTS
where u.OBJECTID == OBJECT_ID
select u;
"Schema specified is not valid. Errors: \r\nStagingDB.ssdl(2,2) : error 0152:
No Entity Framework provider found for the ADO.NET provider
with invariant name 'Oracle.ManagedDataAccess.Client'.
Make sure the provider is registered in the 'entityFramework'
section of the application config file.
See http://go.microsoft.com/fwlink/?LinkId=260882 for more information."
但是,我认为问题是我无法在运行时访问配置文件。这是因为我的应用程序是ArcObjects扩展,并且由于某种原因忽略了所有不是Config.esriaddinx的Config文件。因此,在运行时,我从配置文件中获取连接字符串。
这适用于SQL服务器,但之前我没有在Oracle中尝试过这个。我想知道是否需要包含并在运行时声明Oracle ODP才能工作。
这是我拉动并调用的连接字符串:
connection string="DATA SOURCE=(DESCRIPTION=(ADDRESS= (PROTOCOL=TCP) (HOST=examplehost.com)(PORT=1234))(CONNECT_DATA=(SID = sid)));PASSWORD=hunter2;PERSIST SECURITY INFO=True;USER ID=poor_username""
每当我声明一个我做了partial class
的实体时,我就会调用此连接字符串我也查看过有类似问题的another stack question,但我正在运行最新的ODP.net(v 6.121),其实体6应该是兼容的。
此外,还有以下修复:
public partial class StagingEntities : DbContext
{
private volatile Type _dependency;
public StagingEntities(string connectionString)
: base(connectionString)
{
_dependency = typeof(System.Data.Entity.SqlServer.SqlProviderServices);
}
}
不起作用。
答案 0 :(得分:3)
您的解决方案: 请为Oracle.ManagedDataAccess.Client重新安装NuGet包 - https://www.nuget.org/packages/Oracle.ManagedDataAccess.EntityFramework/
额外信息: 我有完全相同的问题,但对于Oracle.DataAccess.Client。我的问题是:“没有实体框架提供程序为ADO.NET提供程序找到了不变名称'Oracle.DataAccess.Client'。确保提供程序已在应用程序配置文件的'entityFramework'部分中注册。请参阅{ {3}}了解更多信息。“。
我最近从EF5迁移到EF6。旧版本的 Oracle Managed ODP 与EF6不兼容。安装 Oracle.ManagedDataAccess.EntityFramework 之后,我不得不将项目中出现的所有 Oracle.DataAccess.Client 替换为 Oracle.ManagedDataAccess.Client 。它运作良好。
答案 1 :(得分:0)
对我有用的解决方案是我必须在WCF服务中为实体框架和ODP提供程序安装nuget包,因为它仅从WCF Web配置引用ODP配置。 (很奇怪,但我必须这样做)。
还要在某处阅读我们必须仅为控制台库项目执行此操作。
希望这对你有所帮助。
答案 2 :(得分:0)
对我有用的是将App.config从.NET Framework EF项目复制到.NET Core MVC项目。