首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ASP.NET MVC3-找不到请求的.Net框架数据提供程序

ASP.NET MVC3-找不到请求的.Net框架数据提供程序
EN

Stack Overflow用户
提问于 2011-06-28 22:58:21
回答 13查看 57.9K关注 0票数 55

Background-info:

我正在使用Microsoft Visual Web Developer 2010学习版。

关于我(缺乏)经验的信息:这个问题发生在我试图解决的第一个教程中。

一些附加信息:

  • 我熟悉C#、Postgres、Rails (所以MVC和Web应用程序对我来说并不新鲜)
  • 我没有使用或ASP.NET

的经验

问题描述:

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

当我尝试添加与教程中显示的设置完全相同的"MoviesController“并点击' add‘时,我得到了以下错误:

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

谷歌在搜索短语“找不到请求的.Net框架数据提供程序”时给出了大量的结果,但到目前为止还没有解决这个问题。

我尝试过的东西:

我认为SQL-Server没有安装,所以我从Visual-Studio Express ISO安装了它-得到一个错误,然后我从ISO运行了修复,它声称包括SQL Server Express repair &.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包含以下条目

代码语言:javascript
复制
  <connectionStrings>
    <add name="MovieDBContext"
     connectionString="Data Source=|DataDirectory|Movies.sdf"
     providerName="System.Data.SqlServerCe.4.0"/>

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

代码语言:javascript
复制
<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),但现在我只希望能够成功地完成我尝试过的第一个看似简单的教程。

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2011-06-29 06:07:11

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

代码语言:javascript
复制
<add name="MovieDBContext"     connectionString="Data Source=|DataDirectory|Movies.sdf"
providerName="System.Data.SqlServerCe.4.0"/>

包含以下内容

代码语言:javascript
复制
<add name="MovieDBContext"
     connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;database=Movies;User ID=sa;password="
     providerName="System.Data.SqlClient"/>

它已经足够让我继续工作了。我最终也会学习如何使这些类型的应用程序与mysql一起工作,但现在,这至少可以帮助您继续学习本教程。

票数 56
EN

Stack Overflow用户

发布于 2011-07-13 06:23:42

票数 42
EN

Stack Overflow用户

发布于 2011-06-29 02:36:21

如果你看一下配置,你就会发现安装SQL Server是在转移注意力;

代码语言:javascript
复制
<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,但本教程使用的是Compact Edition:One step within part 4 of the tutorial将显式地将您引用的部分添加到Web.config中。所以这是web.config的一部分。

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

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6508516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档