Ошибка Entity Framework при подключении к SQL Server Express после монтирования/подключения в Visual Studio

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

Ссылка на видео

В основном - запустите новый проект MVC 3 и используйте EF обычным способом в простом классе.

Я использовал следующую строку подключения:

<add name="databaseconnection" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|database.mdf;User Instance=true;Initial Catalog=database" providerName="System.Data.SqlClient" />

Когда я перехожу на сайт, Все работает нормально и так, как ожидалось.

Теперь, если я попытаюсь дважды щелкнуть базу данных .mdf, чтобы открыть ее в Visual Studio, все вырвется на свободу!

Я могу подключаться и просматривать таблицы, как и ожидалось, но даже если я ничего не делаю и просто закрываю (и/или) удаляю соединение, в следующий раз, когда я захожу в приложение, я получаю следующую ошибку:

Один или несколько файлов не соответствуют основному файлу базы данных. Если вы пытаетесь подключить базу данных, повторите операцию с правильными файлами. Если это существующая база данных, файл может быть поврежден и должен быть восстановлен из резервной копии. Не удается открыть базу данных «база данных», запрошенная при входе в систему. Вход не выполнен. Ошибка входа для пользователя «WIL2-8EEA651803\Администратор». Файл журнала «c:\documents and settings\administrator\my documents\visual studio 2010\Projects\TestingEF\TestingEF\App_Data\database.ldf» не соответствует основному файлу. Он может быть из другой базы данных или журнал мог быть перестроен ранее.

Что бы я ни пытался, я не могу переподключиться - единственное, что я могу сделать, это переименовать базу данных и исходный каталог. Я уверен, что предыдущая версия учебника по базе данных фильмов MVC (до того, как они обновились до использования компактной платформы) работала нормально, поэтому я не уверен, почему у меня возникают эти проблемы.

Итак, мой вопрос: что вызывает это и что я должен делать вместо этого?

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

"Unable to retrieve metadata for 'TestingEF.Models.blabla'. The provider did not return a ProviderManifestToken string."

Любая идея, что это такое?


person Wil    schedule 07.05.2011    source источник
comment
Я бы просто не использовал функцию AttachDbFileName= - прикрепите файл базы данных к серверу базы данных (возможно, к вашему локальному SQL Server Express) и подключитесь к нему. Этот материал с прикрепленным файлом БД просто странный и беспорядочный и, кажется, вызывает много проблем.... (особенно в сочетании с настройкой User Instance=true...)   -  person marc_s    schedule 10.05.2011
comment
@marc_s - теперь я использую строку подключения SQL Server CE вместе с источником данных, как в примере MVC, и он работает, как и ожидалось ... приложение полностью работает, и я могу одновременно редактировать базу данных. База данных ASP.Net Membership DB и другие проекты, кажется, отлично работают с другой строкой подключения... Я просто не уверен, что изменилось в EF, что привело к его беспорядку, но в любом случае, спасибо... ваш другой ответ и этот комментарий действительно дает немного больше понимания этого вопроса.   -  person Wil    schedule 10.05.2011


Ответы (1)


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

person DDiVita    schedule 08.05.2011
comment
Кроме того, убедитесь, что в файле конфигурации указана правильная строка подключения. Возможно, он не может подключиться к базе данных. - person DDiVita; 10.05.2011