我正在按照这些视频系列学习使用 VS2013 制作 ASP.Net MVC Web 应用程序。当我收到以下错误时:
找不到具有不变名称“Oracle.ManagedDataAccess.Client”的 ADO.NET 提供程序的实体框架提供程序。确保提供程序已在应用程序配置文件的“entityFramework”部分注册。有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=260882。
(在视频中,使用的数据库提供程序是System.Data.SqlClient
ASP.Net 应用程序的自然,但我需要使用Oracle.ManagedDataAccess.Client
)
错误本身在 SO中并不新鲜。而且,正如错误消息和 SO 问题的已接受答案所建议的那样,我检查了 ODP.Net 提供程序是否受 EF 6.0 支持,我发现它是. 尽管如此,我仍然无法使其工作。
我对 MVC 很陌生,所以如果我在这一点上理解错误的 MVC 应用程序/设置的任何概念,我会寻求您的理解,我愿意接受您的更正。
一些可能有用的附加信息:
- 我使用我的 VS2013 提供的 ASP.Net Web 应用程序模板来启动项目。我为它使用 MVC 模板,并且只使用“为 MVC 添加文件夹和核心引用”。我既不是“添加单元测试”也不是“在云中托管”
- 在模板中,没有
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.???
并且已经卡了几个小时。如果我不说,我会收到以下警告:缺少必需的属性“类型”
对此的任何帮助将不胜感激。
如果您知道除了添加提供程序来解决此问题之外,我还需要做任何其他事情,我也很乐意。我在文件中的连接字符串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>