在Entity Framework中,如何在VS2017中从不同的Oracle模式生成实体

时间:2018-01-17 06:41:21

标签: c# oracle entity-framework entity-framework-6 odp.net-managed

我目前正在尝试从Entity Framework 6中的现有Oracle 12数据库中的表生成代码。我遇到的问题是,当我能够在登录环境时看到我拥有的架构时,实体框架似乎看不到我有权访问的任何其他模式。

如何更改它以便我可以看到另一个架构?

我首先使用Entity Framework模型,然后使用代码优先。我可以手动更改我在Oracle中拥有的生成的表上的模式,它可以工作,但这意味着从我自己的模式中的其他模式生成我自己的表版本只是为了能够通过实体使用它们框架。

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

如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

好的,我已经解决了这个问题。在Entity Framework中有一种特殊的方法可以让模式与Oracle一起使用,如果需要,您可以充分利用Entity Framework,包括Designer / Canvas。

首先,在您的应用程序中,使用Nuget,安装Oracle.ManagedDataAccess.EntityFramework包。如果你看一下Nuget中这个包的描述,它说它依赖于EntityFramework和Oracle.ManagedDataAccess。所以安装一个软件包,它将安装所有这些,如果它丢失。

接下来,如果您阅读该说明底部的注释,则会显示“注意:实体框架设计时功能需要从http://otn.oracle.com/dotnet下载32位Oracle Developer Tools for Visual Studio其他Visual Studio设计者,例如TableAdapter Wizard。这个NuGet下载不支持设计时工具,只支持运行时支持。“

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

最后,添加与Oracle数据库的连接。然后,打开服务器资源管理器并找到该连接。右键单击连接,然后选择“过滤器”。然后选择Displayed Schemas。编辑值,添加要显示的所有模式,方法是单击“...”按钮并选择模式。然后单击“更新”然后单击“确定”。

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