ASP.NET MVC 3-не удалось найти requested.Net поставщик данных Framework
Справочная информация:
Я использую Microsoft Visual Web Developer 2010 Express.
Информация о моем (отсутствии) опыта: проблема возникла в первом учебнике, который я пытаюсь проработать.
дополнительная информация:
- мне комфортно с C#, Postgres, Rails (поэтому MVC и веб-приложения для меня не новы)
- я нет опыт работы с ASP.NET или SQL Server
Описание Проблемы:
Я пытаюсь точно следовать шагам из "вступление к ASP.NET MVC 3"-учебник, и я сталкиваюсь с проблемой в первый шаг из части 5-добавление MoviesController:
когда я пытаюсь добавить "MoviesController" с точными настройками, которые показаны в учебнике, и нажмите "Добавить", я получаю следующую ошибку:
" невозможно получить метаданные для MvcMovie.Модели.Кино. не удалось найдите запрошенные данные .Net Framework Поставщик. он не может быть установлен."
Google дал массу результатов при поиске фразы "не удалось найти запрошенного поставщика данных .Net Framework", но до сих пор ничего не решило проблему.
что я пробовал:
Я думаю, что SQL-Server не был установлен, поэтому я установил он из Visual-Studio Express ISO-получил ошибку, затем я запустил ремонт из ISO, и он утверждал, что все 15 точек, включая SQL Server Express repair &.NET 4 Framework, прошли успешно.
Я запустил The_.NET_Framework_Setup_Verification_tool, который преуспел во всем. http://blogs.msdn.com/b/astebner/archive/2008/10/13/8999004.aspx
после упомянутой (повторной)установки и ремонта я воссоздал проект и следил за каждым шаг, как описано в учебнике и получил ту же ошибку.
я обнаружил, что я должен искать DbProviderFactories в машине.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. Они не вошли в машина.конфигурационный файл. "
вопрос:
Так что, возможно, это неправильное направление и, поскольку я понятия не имею, что предпринять, какие шаги я должен предпринять, чтобы расследовать и решить эту проблему?
Кстати. Я установите postgres, поэтому, если использование postgres вместо SQL-server будет простым решением, дайте мне знать. Для моих собственных проектов я бы хотел использовать другую БД в любом случае (возможно, postgres), но сейчас я просто хотел бы успешно пройти через первый и, казалось бы, простой учебник, который я пробовал.
13 ответов
у меня была такая же проблема, поэтому я заменил
<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 в какой-то момент, но пока это должно по крайней мере помочь вам продолжить учебник.
Если вы посмотрите на конфигурацию, вы увидите, что установка 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, однако вы можете скачать конкретные установщики из здесь
У меня на самом деле были установлены SQLServerCE и Express, но учебник использовал Compact Edition: один шаг в части 4 урока явно добавить часть, которую вы цитируете в Интернете.конфиг. Так что это часть сети.config с намерением.
но удаление этой части из интернета.конфигурация позволяет добавить контроллер так, как описано в учебнике. А это значит, больше не ровно следуя учебнику, это нормально для меня. (Это приводит к созданию MvcMovie.Модели.База данных MovieDBContext в SQL Server Express.)
http://forums.asp.net/t/1679349.aspx/1 CypressBender
Re: не удалось получить метаданные для * не удалось найти запрошенный поставщик данных .Net Framework.... 08 августа 2011 07: 44 PM|LINK
Я установил Microsoft SQL Server Compact 4.0, и это исправило проблему для меня. http://www.microsoft.com/download/en/details.aspx?id=17876
Я изменил свой SQL providerName= " System.Данные.SqlClient " в интернете.config, так как у меня есть клиент SQL, а также SQL compact, установленный в моей системе.
восстановление проекта не будет ловить ошибки конфигурации в разделе DBContext... процесс сборки не проходит через соединения, поэтому вы можете строить весь день и все равно бомбить. Как указано выше, исправить в конфиге в строке подключения соответствует Имя_компьютера/Имя_экземпляра_sql/dbname на корректный SQL конфиг. Работал просто отлично, просто изменив мою сеть.config в моем решении.
- убедитесь, что вы строите перед добавлением контроллера. Если это не сработает...
- создайте новый проект, создайте новую базу данных sql server вручную и посмотрите, можно ли к ней подключиться. Если нет, то проблема действительно в конфигурации sql server на вашем компьютере. Вы можете попробовать перейти к postgres, просто убедитесь, что выбранный вами поставщик поддерживает код EF.
то, что я сделал для того, чтобы преодолеть первую проблему я поставил в Интернете.настройте код:
<add name="MovieDBContext"
connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Movies.sdf;Integrated Security=True"
providerName="System.Data.SqlClient"/>
обратите внимание, что я создаю базу данных SQL CE 4, поэтому .ФСР и нет .МДФ
Далее, вы должны получить другие ошибки подключения на странице / фильмы, поэтому замените приведенный выше код на:
<add name="MovieDBContext"
connectionString="Data Source=|DataDirectory|\Movies.sdf;"
providerName="System.Data.SqlServerCe.4.0" />
и вы должны быть хорошо.
У меня был сервер. Он запускал обновления windows. И сообщение, ожидающее перезагрузки, было открыто. После перезагрузки он снова работал.
установите Microsoft SQL Server Compact 4.0. Ссылка на то же самое -http://www.microsoft.com/en-us/download/details.aspx?id=17876
это сработало для меня, надеюсь, это поможет
<add name="MovieDBContext"
connectionString="Data Source=(local);Initial Catalog=Movies; Integrated Security=true;" providerName="System.Data.SqlClient" />
</connectionStrings>
после прочтения других обсуждений в Интернете я нашел другой метод. Если вы не добавляете строку подключения до тех пор, пока не создадите класс контроллера, она также будет работать. Похоже на жука.
попробуйте это:
<add name="MovieDBContext"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|Movies.sdf;User Instance=true"
providerName="System.Data.SqlClient" />