Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.NET MVC 3 - Unable to find the requested .Net Framework Data Provider

Background-info:

I'm using Microsoft Visual Web Developer 2010 Express.
Info about my (lack of) experience: the problem occured within the first tutorial that I'm trying to work through.

Some additional-info:

  • I'm comfortable with C#, Postgres, Rails (so MVC & Web-apps are not new to me)
  • I have no experience with ASP.NET or SQL Server

Problem Description:

I'm trying to following exactly the steps from the "Intro to ASP.NET MVC 3"-tutorial and I'm running into a problem at the first step from part 5 - Adding the MoviesController:

When I'm trying to add the "MoviesController" with the exact settings that are shown in the tutorial and click 'Add' I get the following error:

"Unable to retrieve metadata for MvcMovie.Models.Movie. Unable to find the requested .Net Framework Data Provider. It may not be installed."

Google gave a ton of results when searching for the phrase "Unable to find the requested .Net Framework Data Provider", but nothing has solved the problem so far.

What I've tried:

I think SQL-Server was not installed so I installed it from the Visual-Studio Express ISO- got an error then I've run a repair from the ISO and it claimed that all 15 points including SQL Server Express repair &.NET 4 Framework went through successfully.

I've run the The_.NET_Framework_Setup_Verification_Tool which succeeded for everything. http://blogs.msdn.com/b/astebner/archive/2008/10/13/8999004.aspx

After the mentioned (re-)installing & repairing I recreated the Project and followed every step as described in the tutorial and got the same error.

I found that I should look for DbProviderFactories in machine.config,

The root-Web.config of the Project has the following entries

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

My machine config-file has only one DbProviderFactories entry:

<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> 

then I found the following quote

"we have changed the way DbProviderFactories.GetFactoryClasses() determines the framework providers in VS2010. They are no longer listed in the machine.config file. "

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

Question:

So perhaps this is the wrong direction and since I have no clue what to try next, what steps should I take to investigate & solve this problem?
Btw. I have postgres installed, so if using postgres instead of SQL-server would be an easy solution let me know. For my own projects I would want to use a different DB anyway (probably postgres), but for now I would just want to be able to get successfully through the first and seemingly simple tutorial I've tried.

like image 925
Jennifer Owens Avatar asked Jun 28 '11 14:06

Jennifer Owens


1 Answers

I was having the same problem so I replaced

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

with the following

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

And it worked enough to let me continue working. I too would also eventually learn how to make these kinds of applications work with mysql at some point, but for now this should at least help you continue with the tutorial.

like image 190
fattyman Avatar answered Sep 29 '22 00:09

fattyman