如何在 EF 6 提供程序配置文件中 Add/Activate "Oracle.ManagedDataAccess.Client"?
How to Add/Activate "Oracle.ManagedDataAccess.Client" in the EF 6 provider config file?
我正在学习使用 VS2013 创建 ASP.Net MVC Web 应用程序 these video series。当我收到以下错误时:
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.
(视频中使用的数据库提供者是ASP.Net应用程序的自然System.Data.SqlClient
,但我需要使用Oracle.ManagedDataAccess.Client
)
错误本身是 not new in SO. And, as suggested by the error message and by the accepted answer of the SO question, I checked if the ODP.Net provider is supported by EF 6.0 and I found that it is。尽管如此,我仍然无法使它工作。
我是 MVC 的新手,所以如果有任何 MVC 的概念 application/settings 是我目前理解错误的地方,我会寻求您的理解,我愿意接受您的更正。
一些可能有用的附加信息:
- 我使用我的VS2013提供的ASP.Net Web应用程序模板启动
该项目。我为它使用 MVC 模板,只有“添加文件夹和核心
“MVC 的参考资料。我既 "Add unit tests" 也不 "Host in the cloud"
- 模板中没有
app.config
文件,但是有Web.config
文件(这有什么区别吗?错误消息中提示“确保提供者是在 'entityFramework' 部分注册
应用程序配置文件。)
- 在 Web.config 文件中,我找到了以下
entityFramework
部分:
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
我注意到有
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />`
在那里排队。因此我尝试类似地添加:
<provider invariantName="Oracle.ManagedDataAccess.Client" type=???, EntityFramework.???" />
但是不知道type
属性和EntityFramework.???
属性写什么,卡了好几个小时。如果我不放它,我会收到以下警告:
The required attribute "type" is missing
如有任何帮助,我们将不胜感激。
如果您知道除了添加提供程序来解决此问题之外,我还需要做任何其他事情,我也愿意。我在 web.config
文件中的连接字符串如下:
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-MvcWebApplication1-20160212010850.mdf;Initial Catalog=aspnet-MvcWebApplication1-20160212010850;Integrated Security=True"
providerName="System.Data.SqlClient" />
<add name="EmployeeContext" connectionString="Data source=aaaaa;user id=bbbbbb;password=cccccc;persist security info=True" providerName="Oracle.ManagedDataAccess.Client"/>
</connectionStrings>
我从an Oracle's ODP.Net document and an Oracle Community forum那里得到了答案:
显然,根据已接受的答案,直到 2014 年初,ODAC 才不支持 EF 6,如其 document 中所述。必须部分使用 EF 5 才能使用 Oracle.ManagedDataAccess
然而,当我检查接受的答案所指的文档时,我没有找到暗示回答者所写内容的声明 - 让我相信截至目前,Oracle.ManagedDataAccess
可能得到支持在 EF 6.
然后我发现 this document 其中包含很多技巧来解决在 EF 6 中使用 Oracle.ManagedDataAccess
时可能出现的问题。
对我特别有用的方法是添加:
- 配置部分
<configSections>
<section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</configSections>
依赖程序集
<dependentAssembly>
<publisherPolicy apply="no" />
<assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" />
<bindingRedirect oldVersion="4.121.0.0 - 4.65535.65535.65535" newVersion="4.121.2.0" />
</dependentAssembly>
(我用的是Oracle.ManagedDataAccess
版本4.121.2.0)
Entity Framework 提供商
<provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
全部在Web.config
文件中
我正在学习使用 VS2013 创建 ASP.Net MVC Web 应用程序 these video series。当我收到以下错误时:
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.
(视频中使用的数据库提供者是ASP.Net应用程序的自然System.Data.SqlClient
,但我需要使用Oracle.ManagedDataAccess.Client
)
错误本身是 not new in SO. And, as suggested by the error message and by the accepted answer of the SO question, I checked if the ODP.Net provider is supported by EF 6.0 and I found that it is。尽管如此,我仍然无法使它工作。
我是 MVC 的新手,所以如果有任何 MVC 的概念 application/settings 是我目前理解错误的地方,我会寻求您的理解,我愿意接受您的更正。
一些可能有用的附加信息:
- 我使用我的VS2013提供的ASP.Net Web应用程序模板启动 该项目。我为它使用 MVC 模板,只有“添加文件夹和核心 “MVC 的参考资料。我既 "Add unit tests" 也不 "Host in the cloud"
- 模板中没有
app.config
文件,但是有Web.config
文件(这有什么区别吗?错误消息中提示“确保提供者是在 'entityFramework' 部分注册 应用程序配置文件。) - 在 Web.config 文件中,我找到了以下
entityFramework
部分:
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
我注意到有
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />`
在那里排队。因此我尝试类似地添加:
<provider invariantName="Oracle.ManagedDataAccess.Client" type=???, EntityFramework.???" />
但是不知道
type
属性和EntityFramework.???
属性写什么,卡了好几个小时。如果我不放它,我会收到以下警告:The required attribute "type" is missing
如有任何帮助,我们将不胜感激。
如果您知道除了添加提供程序来解决此问题之外,我还需要做任何其他事情,我也愿意。我在 web.config
文件中的连接字符串如下:
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-MvcWebApplication1-20160212010850.mdf;Initial Catalog=aspnet-MvcWebApplication1-20160212010850;Integrated Security=True"
providerName="System.Data.SqlClient" />
<add name="EmployeeContext" connectionString="Data source=aaaaa;user id=bbbbbb;password=cccccc;persist security info=True" providerName="Oracle.ManagedDataAccess.Client"/>
</connectionStrings>
我从an Oracle's ODP.Net document and an Oracle Community forum那里得到了答案:
显然,根据已接受的答案,直到 2014 年初,ODAC 才不支持 EF 6,如其 document 中所述。必须部分使用 EF 5 才能使用 Oracle.ManagedDataAccess
然而,当我检查接受的答案所指的文档时,我没有找到暗示回答者所写内容的声明 - 让我相信截至目前,Oracle.ManagedDataAccess
可能得到支持在 EF 6.
然后我发现 this document 其中包含很多技巧来解决在 EF 6 中使用 Oracle.ManagedDataAccess
时可能出现的问题。
对我特别有用的方法是添加:
- 配置部分
<configSections>
<section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</configSections>
依赖程序集
<dependentAssembly> <publisherPolicy apply="no" /> <assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" /> <bindingRedirect oldVersion="4.121.0.0 - 4.65535.65535.65535" newVersion="4.121.2.0" /> </dependentAssembly>
(我用的是
Oracle.ManagedDataAccess
版本4.121.2.0)Entity Framework 提供商
<provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
全部在Web.config
文件中