Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.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# 在实体框架中,如何在VS2017中从不同的Oracle模式生成实体_C#_Oracle_Entity Framework_Entity Framework 6_Odp.net Managed - Fatal编程技术网

C# 在实体框架中,如何在VS2017中从不同的Oracle模式生成实体

C# 在实体框架中,如何在VS2017中从不同的Oracle模式生成实体,c#,oracle,entity-framework,entity-framework-6,odp.net-managed,C#,Oracle,Entity Framework,Entity Framework 6,Odp.net Managed,我目前正试图从EntityFramework6中现有的Oracle12数据库的表中生成代码。我所遇到的问题是,尽管在我登录到环境时它能够看到我拥有的模式,但实体框架似乎看不到我可以访问的任何其他模式 如何更改它以便可以看到另一个模式 我首先使用了实体框架模型和代码。我可以手动更改我在Oracle中拥有的已生成表上的模式,这将起作用,但这意味着从我自己模式中的其他模式生成我自己版本的表,以便能够通过实体框架使用它们 否则,从所有现有表生成所有代码将是一项繁琐的工作 我如何解决这个问题?好的,我已经

我目前正试图从EntityFramework6中现有的Oracle12数据库的表中生成代码。我所遇到的问题是,尽管在我登录到环境时它能够看到我拥有的模式,但实体框架似乎看不到我可以访问的任何其他模式

如何更改它以便可以看到另一个模式

我首先使用了实体框架模型和代码。我可以手动更改我在Oracle中拥有的已生成表上的模式,这将起作用,但这意味着从我自己模式中的其他模式生成我自己版本的表,以便能够通过实体框架使用它们

否则,从所有现有表生成所有代码将是一项繁琐的工作


我如何解决这个问题?

好的,我已经解决了这个问题。有一种特殊的方法可以让模式在实体框架中与Oracle一起工作,您可以充分利用实体框架,如果需要,还可以使用设计器/画布

首先,在应用程序中,使用Nuget安装Oracle.ManagedDataAccess.EntityFramework包。如果您在Nuget中查看此包的描述,它会说它取决于EntityFramework和Oracle.ManagedDataAccess。因此,安装一个软件包,它将安装所有这些,如果它丢失的话

接下来,如果你阅读了描述底部的评论,它会说“注意:Entity Framework设计时功能和其他Visual Studio设计器(如TableAdapter向导)需要从下载的32位Oracle Developer Tools for Visual Studio。此NuGet下载不启用设计时工具,只启用运行时支持。”

因此,您需要安装与您的环境相匹配的Oracle Visual Studio工具。安装ODTwithODAC软件包不会产生正确的结果

最后,添加到Oracle数据库的连接。然后,打开服务器资源管理器并找到该连接。右键单击该连接,选择过滤器。然后选择显示的模式。编辑该值,通过单击“…”添加所有要显示的模式。。。“按钮并选择架构。然后单击更新。然后单击Ok


下次要从刚添加的架构中选择对象时,它将显示在实体框架列表中。

好的,我已经解决了这个问题。有一种特殊的方法可以让模式在实体框架中与Oracle一起工作,您可以充分利用实体框架,如果需要,还可以使用设计器/画布

首先,在应用程序中,使用Nuget安装Oracle.ManagedDataAccess.EntityFramework包。如果您在Nuget中查看此包的描述,它会说它取决于EntityFramework和Oracle.ManagedDataAccess。因此,安装一个软件包,它将安装所有这些,如果它丢失的话

接下来,如果你阅读了描述底部的评论,它会说“注意:Entity Framework设计时功能和其他Visual Studio设计器(如TableAdapter向导)需要从下载的32位Oracle Developer Tools for Visual Studio。此NuGet下载不启用设计时工具,只启用运行时支持。”

因此,您需要安装与您的环境相匹配的Oracle Visual Studio工具。安装ODTwithODAC软件包不会产生正确的结果

最后,添加到Oracle数据库的连接。然后,打开服务器资源管理器并找到该连接。右键单击该连接,选择过滤器。然后选择显示的模式。编辑该值,通过单击“…”添加所有要显示的模式。。。“按钮并选择架构。然后单击更新。然后单击Ok


下次您要从刚添加的模式中选择对象时,它将显示在实体框架列表中。

我认为EF在此阶段不支持模式。一种解决方法是在您拥有的模式中创建同义词,使其返回到其他表。
[Table(“TableName”,schema=“MyOtherSchema”)]class MyEntityTypeName{…}
?对于某些默认值,在
OnModelCreating中调用
modelBuilder。HasDefaultSchema(“MyOtherSchema”)
。但也许我还不了解您的实际工作流程…在相关问题列表中可以找到,也许会有帮助,我认为EF在这个阶段不支持模式。一种解决方法是在您拥有的模式中创建同义词,使其返回到其他表。
[Table(“TableName”,schema=“MyOtherSchema”)]class MyEntityTypeName{…}
?对于某些默认值,在
OnModelCreating中调用
modelBuilder。HasDefaultSchema(“MyOtherSchema”)
。但是,也许我还不了解您的实际工作流程……在相关问题列表中可以找到,在服务器资源管理器中可能会有所帮助,当您选择添加新的数据连接时,当您将数据源更改为Oracle时,请确保从数据提供程序下拉列表中选择ODP.NET托管驱动程序。如果不这样做,最终将导致错误的Oracle Server数据连接,这将是一种非常低劣的体验,无法轻松选择模式。谢谢@tone。我想补充一点,集合下拉列表应该在默认的“连接”上,“显示的架构”是一个属性,可以在下面的筛选条件表中找到。但是我无法让它工作,aaaargh。我可以从服务器资源管理器中调整架构。但是,当我想使用此连接创建新的ADO.NET模型时,它仍然使用了错误的模式。我还尝试使用正确的筛选器删除/重新创建连接。(我在Visual Studio 2019上,其余的都一样)它可以工作。将另一个模式添加到连接中而不是替换它是很重要的。()非常感谢你给我这个启发性的回答!我为此奋斗了很长一段时间,并认为必须有一个更复杂的方法来做,如编辑文件