所以,我正在尝试学习ASP.NET,但在数据库连接方面我很困难。
我收到以下错误:
无法找到请求的.Net Framework数据提供程序。它可能没有安装。
描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.ArgumentException:无法找到请求的.Net Framework数据提供程序。它可能没有安装。
和
堆栈追踪:
[ArgumentException:无法找到请求的.Net Framework数据提供程序。它可能没有安装。]
System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName)+1480903
WebMatrix.Data.DbProviderFactoryWrapper.CreateConnection(String connectionString)+63
WebMatrix.Data。<> c__DisplayClass15.b__14()+16
WebMatrix.Data.Database.get_Connection()+19
WebMatrix.Data.Database.EnsureConnectionOpen()+12
WebMatrix.Data.d__0.MoveNext()+66
System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)+381
System.Linq.Enumerable.ToList(IEnumerable`1 source)+58
WebMatrix.Data.Database.Query(String commandText,Object []参数)+102
ASP._Page_NewUser_cshtml.Execute()在c:\ Users \ Euaggelos \ Documents \ Visual Studio 2013 \ WebSites \ WebSite5 \ NewUser.cshtml:20
System.Web.WebPages.WebPageBase.ExecutePageHierarchy()+199
System.Web.WebPages.WebPage.ExecutePageHierarchy(IEnumerable`1 executors)+69
System.Web.WebPages.WebPage.ExecutePageHierarchy()+131
System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext,TextWriter writer,WebPageRenderingBase startPage)+78
System.Web.WebPages.WebPageHttpHandler.ProcessRequestInternal(HttpContextBase httpContext)+116
问题是我安装了.net Framework数据提供程序。
以下是我的代码的一部分:
<connectionStrings>
<add name="DB1Entities" connectionString="metadata=res://*/App_Code.Model.csdl|res://*/App_Code.Model.ssdl|res://*/App_Code.Model.msl;provider=System.Data.SqlClient;provider connection string="data source=(LocalDB)\v11.0;attachdbfilename=|DataDirectory|\DB1Entities.mdf;integrated security=True;connect timeout=30;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
@using WebMatrix.Data;
@{
Page.Title = "Add you user";
Layout = "_Layout.cshtml";
var db = Database.Open("DB1Entities");
var selectQueryString = "SELECT * FROM Users ORDER BY FirstName";
}
<h1>New user</h1>
<table>
<tr>
<th>Id</th>
<th>First name</th>
<th>Last name</th>
</tr>
@foreach (var row in db.Query(selectQueryString)) <!--THIS IS THE ERROR LINE-->
{
<tr>
<td>@row.Id</td>
<td>@row.FirstName</td>
<td>@row.LastName</td>
</tr>
}
</table>
答案 0 :(得分:0)
您可能需要将其添加到app.config文件
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SqlServerCe.4.0" />
<add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
</DbProviderFactories>
答案 1 :(得分:0)
您的连接字符串用于Entity Framework Database First项目。但是,您似乎没有在WebMatrix站点中使用EF。您正在使用标准SQL来查询数据库。将连接字符串更改为普通字符串:
<connectionStrings>
<add name="DB1Entities" connectionString="data source=LocalDB)\v11.0;attachdbfilename=|DataDirectory|\DB1Entities.mdf;integrated security=True;" providerName="System.Data.SqlClient" />
</connectionStrings>
如果您想将Entity Framework与Web Pages项目一起使用,您应该使用Code First方法,详见我的文章:http://www.mikesdotnetting.com/article/182/entity-framework-code-first-development-with-webmatrix