【发布时间】:2013-01-22 02:54:11
【问题描述】:
我知道有很多关于此错误的其他帖子,但没有一个能够阐明或帮助解决我的问题。我正在使用与 SqlExpress 的直接连接,因此没有特殊的 Oracle 或 MySQL 数据库或任何东西。看起来这应该像手套一样合身。
所以场景是这样的,我创建了一个由几个项目组成的解决方案;存储库、数据 (EF5.0)、实用程序、测试项目和 MVC Web 应用程序。目标是通过使用 EF5 的 Repositories 项目中的存储库以及来自测试项目和 MVC 应用程序的一些存储库,通过 Data 类简单地访问底层 SQL Express 数据库。
测试项目工作正常,可以毫无问题地访问和更新数据库。
然而,MVC Web 项目正在抛出“无法找到请求的 .Net Framework 数据提供程序。它可能未安装。”错误,我不明白,因为它使用与测试项目相同的连接字符串。
[ArgumentException: Unable to find the requested .Net Framework Data Provider. It may not be installed.]
System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) +1426271
WebMatrix.Data.DbProviderFactoryWrapper.CreateConnection(String connectionString) +64
WebMatrix.Data.<>c__DisplayClass15.<OpenConnectionStringInternal>b__14() +16
WebMatrix.Data.Database.get_Connection() +19
WebMatrix.Data.Database.EnsureConnectionOpen() +12
WebMatrix.Data.Database.QueryValue(String commandText, Object[] args) +63
WebMatrix.WebData.DatabaseWrapper.QueryValue(String commandText, Object[] parameters) +14
WebMatrix.WebData.SimpleMembershipProvider.GetUserId(IDatabase db, String userTableName, String userNameColumn, String userIdColumn, String userName) +232
WebMatrix.WebData.SimpleMembershipProvider.ValidateUserTable() +85
我有...
- 在 web.config 中注册了 System.Data.SqlClient。
- 根据this article 验证了 GAC 中存在 System.Data 的注册版本 (2.0.0.0)
- 确保连接字符串中没有拼写错误。
这是我在 web.config 中的内容...
<connectionStrings>
<add name="DBCatalogContext"
connectionString="metadata=res://*/DBCatalog.csdl|
res://*/DBCatalog.ssdl|
res://*/DBCatalog.msl;
provider=System.Data.SqlClient;
provider connection string="data source=.\SQLEXPRESS;
initial catalog=DBCatalog;
integrated security=True;
multipleactiveresultsets=True;
App=EntityFramework""
providerName="System.Data.EntityClient" />
</connectionStrings>
<system.data>
<DbProviderFactories>
<add name="SqlClient Data Provider"
invariant="System.Data.SqlClient"
description=".Net Framework Data Provider for SqlServer"
type="System.Data.SqlClient.SqlClientFactory,
System.Data,
Version=2.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</DbProviderFactories>
</system.data>
我看到的唯一对我没有意义的是,当我选择“References”文件夹下的“System.Data”引用并查看属性时,它说它的版本是 4.0.0.0,但是当我在配置站点的“DbProviderFactories”部分更改了版本,但仍然出现错误。此外,我什至没有在有效的测试项目中看到对该库的引用。
我确信这是一个疏忽,或者我缺少一些配置设置,但我不知道在这一点上还能看到哪里,所以任何帮助都将不胜感激。
谢谢, G
【问题讨论】:
标签: sql-server asp.net-mvc dataprovider