无法找到请求的.Net框架数据提供程序

背景信息:

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

一些附加信息:

  • 我对C#,Postgres,Rails感到满意(所以MVC和Web应用程序对我来说并不陌生)
  • 没有使用ASP.NET或SQL Server的经验
  • 问题描述:

    我试图完全遵循“Intro to 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将是一个简单的解决方案,请告诉我。 对于我自己的项目,我希望使用不同的数据库(可能是postgres),但现在我只想通过我尝试的第一个看似简单的教程获得成功。


    我遇到了同样的问题,所以我换了

    <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,但现在这应该至少可以帮助您继续教程。


    您需要安装Microsoft SQL Server Compact 4.0。


    如果你看看配置,你会发现安装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,但本教程使用精简版:本教程第4部分中的一步是将引用的部分显式添加到Web.config。 所以这是一个意图web.config的一部分。

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

    链接地址: http://www.djcxy.com/p/64533.html

    上一篇: Unable to find the requested .Net Framework Data Provider

    下一篇: Any resources comparing Rails 3 and asp.net MVC 3?