【问题标题】:ASP.NET MVC 3 - Unable to find the requested .Net Framework Data ProviderASP.NET MVC 3 - 找不到请求的 .Net Framework 数据提供程序
【发布时间】:2011-09-24 09:50:39
【问题描述】:

背景信息:

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

一些附加信息:

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

问题描述:

我正在尝试完全按照 "Intro to ASP.NET MVC 3"-tutorial 中的步骤进行操作,但在 the first step from part 5 - Adding the MoviesController: 遇到了问题

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

“无法检索元数据 MvcMovie.Models.Movie。 无法 找到请求的 .Net Framework 数据 Provider。可能没有安装。”

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),但现在我只想能够成功完成我尝试过的第一个看似简单的教程。

【问题讨论】:

  • 如果每个人都这样定义他们的问题 +1
  • 感谢您的评论。
  • 我遇到了同样的问题,做同样的事情。谢谢。
  • 试试这个链接,这可能对你有更多帮助:stackoverflow.com/a/14354851/1983024

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


【解决方案1】:

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

<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 的正确方法。
  • fattyman 的解决方案有效。 @Saroop Trivedi 我已经安装了 SQL server compact 4.0,但仍然出现上述错误。
  • 我终于能够通过使用原始连接字符串使其正常工作,但添加了对“System.Data.SqlServerCe”(版本 4.0,而不是 3.5)的引用。
  • 这个答案可能是一个很好的解决方法,但我体验了安装 Windows Server Ce 匹配更好;)
【解决方案2】:

【讨论】:

  • 这对我不起作用,我已经安装了 Sql Server CE 4.0
【解决方案3】:

如果您查看配置,您会发现安装 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 一起安装,但是您可以从 here 下载特定的安装程序

我实际上已经安装了 SQLServerCE 和 Express,但是教程使用的是精简版: One step within part 4 of the tutorial 是将您引用的部分显式添加到 Web.config。所以这是有意的 web.config 的一部分。

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

【讨论】:

    【解决方案4】:

    http://forums.asp.net/t/1679349.aspx/1 CypressBender

    Re:无法检索元数据 * 无法找到请求的 .Net Framework 数据提供程序...。 2011 年 8 月 8 日 07:44 PM|链接

    我安装了 Microsoft SQL Server Compact 4.0,它为我解决了这个问题。 http://www.microsoft.com/download/en/details.aspx?id=17876

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

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

        【讨论】:

          【解决方案7】:
          1. 确保在添加控制器之前构建。如果这不起作用...
          2. 新建一个项目,手动新建一个sql server数据库,看看能不能连接上。如果不是,那么问题确实出在您机器上的 sql server 配置中。您可以尝试使用 postgres,只要确保您选择的提供程序首先支持 EF 代码。

          【讨论】:

            【解决方案8】:

            我所做的是为了克服我在 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

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

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

            你应该没事的。

            【讨论】:

            • 完整版 SQL Server 的连接字符串是什么?
            【解决方案9】:

            我有一个服务器。它运行 Windows 更新。并打开了一条等待重启的消息。 重启后又可以了。

            【讨论】:

              【解决方案10】:

              安装 Microsoft SQL Server Compact 4.0。相同的链接是 - http://www.microsoft.com/en-us/download/details.aspx?id=17876

              【讨论】:

                【解决方案11】:

                这对我有用,希望对你有帮助

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

                【讨论】:

                  【解决方案12】:

                  在阅读了网络上的其他讨论后,我找到了另一种方法。 如果在创建控制器类之前不添加连接字符串,那么它也可以工作。这有点像一个错误。

                  【讨论】:

                    【解决方案13】:

                    试试这个:

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

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 2012-06-06
                      • 1970-01-01
                      • 2013-02-18
                      • 2012-04-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多