vistas vista una que para net mvc mostrar modelos mensajes datos asp c# sql-server asp.net-mvc-3 visual-web-developer dataprovider

c# - vista - razor para mvc



ASP.NET MVC 3: no se puede encontrar el proveedor de datos de.Net Framework solicitado (13)

Información de fondo:

Estoy usando Microsoft Visual Web Developer 2010 Express.
Información sobre mi (falta de) experiencia: el problema ocurrió en el primer tutorial que estoy tratando de resolver.

Alguna información adicional:

  • Me siento cómodo con C #, Postgres, Rails (por lo que las aplicaciones MVC y Web no son nuevas para mí)
  • No tengo experiencia con ASP.NET o SQL Server

Descripción del problema:

Intento seguir exactamente los pasos del tutorial "Introducción a ASP.NET MVC 3" y me aparece un problema en el primer paso de la parte 5 - Agregar el controlador Movies:

Cuando trato de agregar el "MovieController" con la configuración exacta que se muestra en el tutorial y hago clic en "Agregar" obtengo el siguiente error:

"No se pueden recuperar los metadatos para MvcMovie.Models.Movie. No se puede encontrar el proveedor de datos de .Net Framework solicitado. Es posible que no esté instalado".

Google dio un montón de resultados al buscar la frase "No se pudo encontrar el Proveedor de datos de .Net Framework" solicitado, pero hasta ahora nada ha resuelto el problema.

Lo que he intentado:

Creo que SQL-Server no se instaló, así que lo instalé desde el Visual-Studio Express ISO, obtuve un error, luego ejecuté una reparación del ISO y afirmó que los 15 puntos incluyen reparación de SQL Server Express y .NET 4 Framework pasó con éxito

He ejecutado The_.NET_Framework_Setup_Verification_Tool que tuvo éxito para todo. http://blogs.msdn.com/b/astebner/archive/2008/10/13/8999004.aspx

Después de la (re) instalación y reparación mencionadas recreé el Proyecto y seguí cada paso como se describe en el tutorial y obtuve el mismo error.

Descubrí que debería buscar DbProviderFactories en machine.config,

El root-Web.config del proyecto tiene las siguientes entradas

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

El archivo config de mi máquina solo tiene una entrada 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>

entonces encontré la siguiente cita

"Hemos cambiado la forma en que DbProviderFactories.GetFactoryClasses () determina los proveedores del framework en VS2010. Ya no están listados en el archivo machine.config".

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

Pregunta:

Entonces, quizás esta es la dirección equivocada y dado que no tengo idea de qué probar a continuación, ¿qué pasos debo seguir para investigar y resolver este problema?
Por cierto. Tengo postgres instalado, así que si usa postgres en lugar de SQL-server sería una solución fácil, hágamelo saber. Para mis propios proyectos, me gustaría utilizar una base de datos diferente de todos modos (probablemente postgres), pero por ahora solo me gustaría poder obtener con éxito el primer y aparentemente simple tutorial que he probado.


  1. Asegúrese de construir antes de agregar el controlador. Si eso no funciona ...
  2. Cree un nuevo proyecto, cree una nueva base de datos del servidor sql manualmente y vea si puede conectarse. Si no, entonces el problema está en la configuración del servidor sql en su máquina. Puede intentar ir a postgres, solo asegúrese de que el proveedor que elija tenga soporte para el código EF primero.

Cambié mi SQL providerName = "System.Data.SqlClient" en web.config, ya que tengo SQL Client y SQL Compact instalados en mi sistema.


Después de leer otras discusiones en la web, he encontrado otro método. Si no agrega la cadena de conexión hasta que haya creado la clase de controlador, entonces también funcionará. Parece un error.


Estaba teniendo el mismo problema, así que reemplacé

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

con lo siguiente

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

Y funcionó lo suficiente como para permitirme seguir trabajando. Yo también eventualmente aprendería cómo hacer que este tipo de aplicaciones funcionen con mysql en algún momento, pero por ahora esto debería al menos ayudarte a continuar con el tutorial.


Esto funcionó para mí, espero que ayude

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



Lo que hice fue para superar el primer problema que puse en Web.config el código:

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

Tenga en cuenta que estoy creando una base de datos SQL CE 4, por lo tanto, el .sdf y no .mdf

A continuación, debe recibir otros errores de conexión en la página / Películas, así que reemplace el código anterior por:

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

Y deberías estar bien.



Prueba esto:

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


Reconstruir el proyecto no detectará los errores de configuración en la sección DBContext ... el proceso de compilación no pasa por las conexiones, por lo que puede construir todo el día y seguir bombardeando. Como se sugirió anteriormente, corrija la configuración para que la cadena de conexión coincida con MachineName / SQLInstanceName / DBName con la configuración de SQL correcta. Funcionó bien simplemente modificando mi web.config en mi solución.


Si miras la configuración, verás que instalar SQL Server fue una pista falsa.

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

SqlServerCE no es, me temo, completo SQL Server, es SQL Server Compact Edition . Pensé que se habría instalado con VS Express, pero puedes descargar los instaladores específicos desde aquí

De hecho, tenía SQLServerCE y Express instalados, pero el tutorial utilizó Compact Edition: un paso dentro de la parte 4 del tutorial es agregar explícitamente la parte que citó a Web.config. Entonces esto es parte de la web.config por intención.

Pero al eliminar esta parte del web.config, es posible agregar el Controlador de la manera descrita en el tutorial. Si bien esto significa que ya no sigo exactamente el tutorial, está bien para mí. (Esto da como resultado la creación de una base de datos MvcMovie.Models.MovieDBContext en SQL Server Express).


Yo tenía un servidor. Ejecutó actualizaciones de Windows. Y un mensaje esperando para reiniciar estaba abierto. Después de reiniciar, funcionó de nuevo.