asp.net недопустимое значение MVC для ключа "attachdbfilename"

в настоящее время я читаю Мэннинга "ASP.NET MVC 4 in Action" книга и попытка заставить первый пример работать.

в моем тестовом приложении я построил простую модель и создал некоторые представления. Затем я импортировал "SQL Server Compact" с помощью NuGet.

когда я, наконец, пытаюсь запустить приложение, я получаю следующую ошибку:

Invalid value for key 'attachdbfilename'

это происходит при каждом взаимодействии с базой данных (SELECT или другими операциями CRUD), которые я запускаю. Есть идеи?

9 ответов


хотя, я немного поздно, чтобы ответить на этот вопрос, но я столкнулся с той же проблемой и решил ее, изменив строку подключения, как показано ниже

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

надеюсь, это будет полезно и для других.


Я попытался найти решение для этой конкретной ошибки без успеха.

исправлено в конце, обновив .Net Framework 4 до 4.0.2. Патч и детали можно найти вот ссылка

надеюсь, это поможет


Я думаю, что проблемы здесь-строка в интернете.config-это не правильно Согласно вашей настройке sql, строка будет работать, если вы установите что-то подобное этому

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

Источник Данных=.\SQLEXPRESS; -- > когда-нибудь это будет источник данных=.; после этого вам нужно настроить право доступа к папке App_Data Если у тест на Window 7, щелкните правой кнопкой мыши папку. свойство Вкладка Безопасность - > добавить пользовательскую сетевую службу с полным правом


перейдите в раздел Web.настройте и измените раздел следующим образом, чтобы использовать SQLServerCE4:

<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework">
<parameters>
<parameter value="System.Data.SqlServerCe.4.0"/>
</parameters>
</defaultConnectionFactory>
</entityFramework>

Я думаю, проблема возникает только при использовании SQL Express на .NET Framework v4.0.30319 в любом случае Поддержка среды выполнения локальной базы данных SQL Server Express в SqlClient добавлена в .NET Framework update 4.0.2 read -http://support.microsoft.com/kb/2544514

поочередно используйте строку подключения, аналогичную этой

<add name="EmployeeDbContext" connectionString="Data Source=.;Initial Catalog=Employees;AttachDBFileName=|DataDirectory|\Employees.mdf;Integrated Security=True"
         providerName="System.Data.SqlClient" />

<add name="myconstr" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|mydata.mdf;Integrated Security=True" providerName="System.Data.SqlClient" /> 

выше строка соединения давала ошибку, но как только добавлено " \ " перед именем моей базы данных ошибка была решена.

попробуйте это:

<add name="myconstr" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\mydata.mdf;Integrated Security=True" providerName="System.Data.SqlClient" /> 

вы используете SQL Server Compact 4.0:

убедитесь, что установлен SQL Server Compact 4.0.

установить VS 2010 SP1 Tools для SQL Server Compact.

измените строку подключения на:

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

щелкните правой кнопкой мыши на папке контроллеров и - > добавить - > контроллер

тип:

YourController
MVC-Controller with read/write ...
MyModel
new datacontext -> APP.Models.DatabaseContext

вот сообщение в блоге, которое я нашел об этой ошибке. Он немного устарел, но использует экспресс-версию sql server. MSDN Link

это сообщение в блоге говорит о том, что имя сервера базы данных sql должно быть локальным адресом, а не /sqlexpress

есть еще блоге это говорит о наличии неправильной строки подключения. Поэтому, возможно, проверьте строку подключения к базе данных. и твоя проблема может быть там.


столкнувшись с той же проблемой, я просмотрел свою строку подключения и обнаружил, что пути "UNC-style", например \MyServer\MyDBServer are не разрешено, нужно использовать MyServer\MyDBServer синтаксис для удаленного узла или на .\MyDBServer синтаксис для локально размещенных серверов БД.