背景信息:
我正在使用 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 数据提供程序。它可能未安装。”
谷歌在搜索“无法找到请求的 .Net Framework 数据提供者”这一短语时给出了大量的结果,但到目前为止还没有解决这个问题。
我试过的:
我认为 SQL-Server 没有安装,所以我从 Visual-Studio Express ISO 安装它 - 出现错误然后我从 ISO 运行修复,它声称包括 SQL Server Express 修复和 .NET 4 框架在内的所有 15 点顺利通过。
我已经运行了 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 文件中。”
问题:
所以也许这是错误的方向,因为我不知道下一步该尝试什么,我应该采取哪些步骤来调查和解决这个问题?
顺便提一句。我已经安装了 postgres,所以如果使用 postgres 而不是 SQL-server 将是一个简单的解决方案,请告诉我。对于我自己的项目,无论如何我都想使用不同的数据库(可能是 postgres),但现在我只想能够成功完成我尝试过的第一个看似简单的教程。