Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 没有配置的ADO.NET Oracle.ManagedDataAccess.Client的实体框架提供程序_C#_Oracle_Entity Framework_Arcgis_Odp.net - Fatal编程技术网

C# 没有配置的ADO.NET Oracle.ManagedDataAccess.Client的实体框架提供程序

C# 没有配置的ADO.NET Oracle.ManagedDataAccess.Client的实体框架提供程序,c#,oracle,entity-framework,arcgis,odp.net,C#,Oracle,Entity Framework,Arcgis,Odp.net,每当我尝试运行此查询时,都会出现以下错误: 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 AD

每当我尝试运行此查询时,都会出现以下错误:

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的配置文件。因此,在运行时,我从配置文件中获取连接字符串

这对SQL Server很有效,但我以前从未在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""
然后,每当我声明一个实体时,我就会调用这个连接字符串,我做了一个

我也看到了类似的问题,但是我运行的是最新的ODP.net(v6.121)和Entity6,它应该是兼容的

此外,还有以下修复程序:

public partial class StagingEntities : DbContext
{
    private volatile Type _dependency;

    public StagingEntities(string connectionString)
        : base(connectionString)
    {
        _dependency = typeof(System.Data.Entity.SqlServer.SqlProviderServices);

    }
}

不起作用。

几周前我也有同样的问题。我使用的是实体框架6.1.3和ODP最新版本。我正在控制台库(.dll)中使用实体框架,并从WCF服务调用它

对我有效的解决方案是,我还必须在WCF服务中安装实体框架和ODP提供程序的nuget包,因为它仅从WCF web配置中引用ODP配置。(奇怪,但我必须这么做)

还可以在某些地方读到,我们必须只对控制台库项目执行此操作


希望这对您有所帮助。

您的解决方案: 请重新安装Oracle.ManagedDataAccess.Client的NuGet软件包-

额外信息: 我遇到了完全相同的问题,但针对Oracle.DataAccess.Client。我的问题是:“未找到具有固定名称“Oracle.DataAccess.Client”的ADO.NET提供程序的实体框架提供程序。请确保该提供程序已在应用程序配置文件的“entityFramework”部分注册。有关详细信息,请参阅。”


我最近从EF5迁移到了EF6。Oracle托管ODP的旧版本与EF6不兼容。安装Oracle.ManagedDataAccess.EntityFramework后,我必须将项目中出现的所有Oracle.DataAccess.Client替换为Oracle.ManagedDataAccess.Client。它工作得很好。

对我有效的方法是将App.config从我的.NET Framework EF项目复制到我的.NET核心MVC项目中。

你从哪里获得ODP.NET的?你是怎么安装的?如果使用Nuget,请确保将其标记为“官方”。有两个下载,一个用于ODP.NET,另一个用于ODP.NET EF库。是的,nuget和我有两个包:官方Oracle ODP.NET、托管驱动程序和官方Oracle ODP.NET、托管实体框架驱动程序和实体也是使用nuget安装的nuget包中包含的脚本应该会自动更新您的app.config或web.config以注册我们的EF提供商。这是真的吗?不幸的是,我正在使用的应用程序类型不包括配置文件。因此,如果我想在SQL中包含一个实体,我必须在运行时解析配置以构建连接字符串。但是是的,会生成配置文件,但是ArcMap扩展应用程序类型在运行时不包括配置文件,这就是问题所在。Josh,如果使用nuget,您可以将条目手动放在machine.config中。或者,您可以获得XCOPY安装程序版本并选择执行“机器范围的配置”:这是正确的。为了更加“云友好”,我们不再在机器配置中注册EF提供者。我上面的评论适用于Nuget。如果使用XCOPY或OUI安装程序,则可以执行“机器范围的安装”,并且它仍会更新machine.config。我在asp.net核心应用程序中使用EF时遇到问题,该应用程序正在引用处理EF工作的类库(即具有上下文…)。一旦我在asp.net项目的app.config中添加了entityFramework部分,它就成功了。我也遇到了同样的问题,将这些包安装到我的webservice项目中也有帮助