c# mvc学习 - ASP.NET MVC 3 - 无法找到请求的.Net Framework数据提供程序





net框架 net事件 (12)


我在web.config中更改了我的SQL providerName =“System.Data.SqlClient”,因为我的系统上安装了SQL客户端和SQL compact。

背景信息:

我正在使用Microsoft Visual Web Developer 2010 Express。
关于我(缺乏)经验的信息:我正在尝试解决的第一个教程中出现的问题。

一些额外的信息:

  • 我对C#,Postgres,Rails很满意(所以MVC和Web应用对我来说并不陌生)
  • 没有使用ASP.NET或SQL Server的经验

问题描述:

我正在尝试完全遵循“介绍到ASP.NET MVC 3”教程中的步骤,并且我在第5部分的第一步遇到问题- 添加MoviesController:

当我尝试使用教程中显示的确切设置添加“MoviesController”并单击“添加”时,我收到以下错误:

“无法检索MvcMovie.Models.Movie的元数据。 无法找到请求的.Net Framework数据提供程序。可能无法安装。”

Google在搜索“无法找到所请求的.Net Framework数据提供程序”这一短语时给出了大量结果,但到目前为止还没有解决问题。

我尝试过的:

我认为SQL-Server没有安装,所以我从Visual-Studio Express ISO安装了一个错误然后我从ISO运行修复它声称所有15点包括SQL Server Express修复和.NET 4 Framework成功地完成了。

我已经运行了The_.NET_Framework_Setup_Verification_Tool,它成功了。 http://blogs.msdn.com/b/astebner/archive/2008/10/13/8999004.aspx

在提到(重新)安装和修复之后,我重新创建了项目,并按照教程中的描述执行了每个步骤并得到了相同的错误。

我发现我应该在machine.config中查找DbProviderFactories,

项目的root-Web.config具有以下条目

  <connectionStrings>
    <add name="MovieDBContext"
     connectionString="Data Source=|DataDirectory|Movies.sdf"
     providerName="System.Data.SqlServerCe.4.0"/>

我的机器配置文件只有一个DbProviderFactories条目:

<DbProviderFactories>
<add name="Microsoft SQL Server Compact Data Provider" invariant="System.Data.SqlServerCe.3.5" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/></DbProviderFactories>

然后我发现了以下引用

“我们改变了DbProviderFactories.GetFactoryClasses()确定VS2010中框架提供程序的方式。它们不再列在machine.config文件中。”

来自http://social.msdn.microsoft.com/Forums/en-ZA/adodotnetdataproviders/thread/d79129c4-ae05-4c45-8997-bd90f5765a3a

题:

所以也许这是错误的方向,因为我不知道下一步该尝试什么,我应该采取什么步骤来调查和解决这个问题?
顺便说一句。 我安装了postgres,所以如果使用postgres而不是SQL-server将是一个简单的解决方案让我知道。 对于我自己的项目,我想要使用不同的DB(可能是postgres),但是现在我只想通过我尝试的第一个看似简单的教程成功。




尝试这个:

<add name="MovieDBContext"
     connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|Movies.sdf;User Instance=true"
     providerName="System.Data.SqlClient" />



  1. 确保在添加控制器之前构建。 如果这不起作用......
  2. 创建一个新项目,手动创建一个新的SQL Server数据库,看看是否可以连接到它。 如果没有,那么问题确实存在于您机器上的sql server配置中。 您可以尝试使用postgres确保您选择的提供商首先支持EF代码。



这对我有用,希望它有所帮助

<add name="MovieDBContext"
     connectionString="Data Source=(local);Initial Catalog=Movies; Integrated Security=true;"    providerName="System.Data.SqlClient" />
</connectionStrings>






我有同样的问题,所以我更换了

<add name="MovieDBContext"     connectionString="Data Source=|DataDirectory|Movies.sdf"
providerName="System.Data.SqlServerCe.4.0"/>

以下内容

<add name="MovieDBContext"
     connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;database=Movies;User ID=sa;password="
     providerName="System.Data.SqlClient"/>

它足以让我继续工作。 我也最终还会学习如何使这些类型的应用程序在某些时候与mysql一起工作,但是现在这至少可以帮助你继续学习本教程。




如果你看一下配置,你会发现安装SQL Server是一个红色的鲱鱼;

<add name="MovieDBContext"
 connectionString="Data Source=|DataDirectory|Movies.sdf"
 providerName="System.Data.SqlServerCe.4.0"/>

我担心,SqlServerCE不是完整的SQL Server,而是SQL Server Compact Edition 。 我原本以为会安装VS Express,但是你可以从这里下载特定的安装程序

我实际安装了SQLServerCE和Express,但本教程使用的是Compact Edition: 本教程第4部分中的一步是将您引用的部分显式添加到Web.config中。 所以这是web.config的一部分。

但是从web.config中删除这个部分可以按照教程描述的方式添加Controller。 虽然这意味着不再完全遵循教程,但对我来说没问题。 (这导致在SQL Server Express中创建MvcMovie.Models.MovieDBContext数据库。)




重建项目不会在DBContext部分中捕获配置错误...构建过程不会遍历连接,因此您可以构建一整天并仍然弹出。 如上所述,修复配置,使连接字符串与正确的SQL配置匹配MachineName / SQLInstanceName / DBName。 只需在我的解决方案中修改我的web.config就可以了。







我所做的是为了克服我在Web.config中放入的第一个问题代码:

 <add name="MovieDBContext"
     connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Movies.sdf;Integrated Security=True"
   providerName="System.Data.SqlClient"/>

注意我正在创建SQL CE 4数据库,因此是.sdf而不是.mdf

接下来,您应该在页面/电影上收到另一个连接错误,因此请将上述代码替换为:

<add name="MovieDBContext"
     connectionString="Data Source=|DataDirectory|\Movies.sdf;"
   providerName="System.Data.SqlServerCe.4.0"  />

而你应该没事。







通过使用NuGet,我能够在Visual Studio 2010中解决类似的问题。

转到工具>库包管理器>管理解决方案的NuGet包...

在对话框中,搜索“EntityFramework.SqlServerCompact”。 您将找到一个包含描述“允许SQL Server Compact 4.0与实体框架一起使用”的包。 安装此软件包。

将在您的web.config中插入与以下内容类似的元素:

<entityFramework>
  <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework">
    <parameters>
      <parameter value="System.Data.SqlServerCe.4.0" />
    </parameters>
  </defaultConnectionFactory>
</entityFramework>






c# sql-server asp.net-mvc-3 visual-web-developer dataprovider