Programing

ASP.NET MVC 3-요청한 .Net Framework 데이터 공급자를 찾을 수 없습니다.

lottogame 2021. 1. 7. 07:36
반응형

ASP.NET MVC 3-요청한 .Net Framework 데이터 공급자를 찾을 수 없습니다.


배경 정보 :

Microsoft Visual Web Developer 2010 Express를 사용하고 있습니다.
내 (부족한) 경험에 대한 정보 : 내가 해결하려는 첫 번째 자습서 내에서 문제가 발생했습니다.

추가 정보 :

  • 저는 C #, Postgres, Rails에 익숙합니다 (따라서 MVC 및 웹 앱은 나에게 새로운 것이 아닙니다)
  • ASP.NET 또는 SQL Server에 대한 경험 없습니다.

문제 설명:

"ASP.NET MVC 3 소개" 자습서 의 단계를 정확히 따르려고 노력하고 있으며 5 부 -MoviesController 추가의 첫 번째 단계에서 문제가 발생 합니다.

튜토리얼에 표시된 정확한 설정으로 "MoviesController"를 추가하고 '추가'를 클릭하면 다음 오류가 발생합니다.

"MvcMovie.Models.Movie에 대한 메타 데이터를 검색 할 수 없습니다. 요청 된 .Net Framework 데이터 공급자를 찾을 수 없습니다. 설치되지 않았을 수 있습니다."

Google은 "요청한 .Net Framework 데이터 공급자를 찾을 수 없습니다"라는 문구를 검색 할 때 많은 결과를 제공했지만 지금까지 문제를 해결 한 것은 없습니다.

내가 시도한 것 :

SQL-Server가 설치되지 않았기 때문에 Visual-Studio Express ISO에서 설치 한 것 같습니다. 오류가 발생하고 ISO에서 수리를 실행했으며 SQL Server Express 수리 및 .NET 4 Framework를 포함한 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 파일에 나열되지 않습니다."

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

질문:

그래서 아마도 이것은 잘못된 방향이고 다음에 무엇을 시도해야할지 모르겠 기 때문에이 문제를 조사하고 해결하기 위해 어떤 조치를 취해야합니까?
Btw. 나는 postgres가 설치되어 있으므로 SQL-server 대신 postgres를 사용하는 것이 쉬운 해결책이 될 수 있다면 알려주십시오. 내 프로젝트의 경우 어쨌든 다른 DB (아마도 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와 함께 설치되었을 것이라고 생각했지만 여기 에서 특정 설치 프로그램을 다운로드 할 수 있습니다.

I actually had both SQLServerCE and Express installed, but the tutorial used Compact Edition: One step within part 4 of the tutorial is to explicitly add the part you quoted to the Web.config. So this is a part of the web.config by intention.

But deleting this part from the web.config makes it possible to add the Controller in the way the tutorial described it. While this means no longer exactly following the tutorial, it's fine for me. (This results in the creation of an MvcMovie.Models.MovieDBContext database in SQL Server Express.)


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

Re: Unable to retrieve metadata for * Unable to find the requested .Net Framework Data Provider.... Aug 08, 2011 07:44 PM|LINK

I installed Microsoft SQL Server Compact 4.0, and that fixed the problem for me. http://www.microsoft.com/download/en/details.aspx?id=17876


I changed my SQL providerName="System.Data.SqlClient" in web.config , since I have SQL client as well as SQL compact installed on my system.


Rebuilding the project wont catch config errors in the DBContext section... the build process does not walk through connections, so you can build all day and still bomb out. As suggested above, fix the config so the connection string matches MachineName/SQLInstanceName/DBName with the correct SQL config. Worked just fine by just modifying my web.config in my solution.


  1. Make sure that you build prior to adding the controller. If that doesn't work...
  2. Create a new project, create a new sql server database manually and see if you can connect to it. If not, then the problem is indeed in your sql server config on your machine. You can try going to postgres just be sure that the provider you choose has support for EF code first.

What I did was in order to overcome the first problem I put in Web.config the code:

 <add name="MovieDBContext"
     connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Movies.sdf;Integrated Security=True"
   providerName="System.Data.SqlClient"/>

Notice I am creating SQL CE 4 database, therefore the .sdf and not .mdf

Next, you should receive another connection errors on the page /Movies, so replace the above code with :

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

And you should be fine.


I had a server. It ran windows updates. And a message waiting for restart was open. After restart it worked again.


Install Microsoft SQL Server Compact 4.0. The link for same is - http://www.microsoft.com/en-us/download/details.aspx?id=17876


This worked for me, hope it helps

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

After reading other discussions around the web I have found another method. If you do not add the connection string until after you have created the controller class, then it will work also. It kind of seems like a bug.


Try this:

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

ReferenceURL : https://stackoverflow.com/questions/6508516/asp-net-mvc-3-unable-to-find-the-requested-net-framework-data-provider

반응형