C#ASP.NET与数据库错误的连接

时间:2015-05-21 10:34:42

标签: c# asp.net asp.net-webpages

所以,我正在尝试学习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=&quot;data source=(LocalDB)\v11.0;attachdbfilename=|DataDirectory|\DB1Entities.mdf;integrated security=True;connect timeout=30;MultipleActiveResultSets=True;App=EntityFramework&quot;" 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> 

enter image description here

2 个答案:

答案 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