.NET Entity Framework запоминает несуществующее имя базы данных

Я использую потрясающую библиотеку MembershipReboot Брока Аллена для предоставления служб идентификации в моем приложении .NET. Согласно Начало работы с MembershipReboot, MembershipReboot использует Entity Framework (EF ) для доступа к данным.

Примеры приложений содержат базу данных SQL Server MembershipReboot.mdf. Из этой базы данных я экспортировал схему и данные и импортировал их в базу данных своего приложения (MyTestApp.mdf — см. ниже).

Вы можете увидеть, откуда берется MembershipReboot.mdf, поскольку образцы, которые сопровождают MembershipReboot, определяют следующую строку подключения::

<add name="MembershipReboot" connectionString="Data Source=(LocalDb)\bla;Initial Catalog=MembershipReboot;Integrated Security=True" providerName="System.Data.SqlClient"/>

Я установил следующую строку подключения для базы данных моего приложения:

<add name="DefaultConnectionString" connectionString="Server=(LocalDb)\bla;AttachDbFilename=|DataDirectory|\MyTestApp.mdf;Initial Catalog=MyTestApp;Integrated Security=True" providerName="System.Data.SqlClient" />

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

Не удается прикрепить файл «C:\Users\mkrieger\Google Drive\Projects\MyTestApp\MyTestApp\App_Data\MembershipReboot.mdf» в качестве базы данных «MembershipReboot».

Описание: во время выполнения текущего веб-запроса возникло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.Data.SqlClient.SqlException: невозможно прикрепить файл «C:\Users\mkrieger\Google Drive\Projects\MyTestApp\MyTestApp\App_Data\MembershipReboot.mdf» в качестве базы данных «MembershipReboot».

Я выполнил полнотекстовый поиск в каталоге моего приложения, за которым последовала строки. поиск исполняемых файлов и всех бинарных файлов для MembershipReboot.mdf, но оказался пустым.

Что мне не хватает?


person Matthew    schedule 15.09.2014    source источник
comment
У вас есть <clear/> в верхней части строк подключения в вашем файле конфигурации?   -  person Basic    schedule 15.09.2014
comment
@Basic - я этого не делал, но я просто добавил и пытаюсь. Но если ‹clear /› удаляет ссылки на унаследованные строки подключения, разве я не должен был найти виновную строку подключения во время текстового поиска?   -  person Matthew    schedule 15.09.2014
comment
Это зависит от... Существует несколько способов указания строк, и, если вы не знакомы с рассматриваемой библиотекой, это проще всего проверить. Возможные причины, по которым он может быть не найден, включают хранение во внешнем файле/реестре, динамическое построение имени файла (String.Format("{0}.{1}", "MembershipReboot", extension)) и т. д... опять же, не говоря о том, что они вероятны, просто исключая возможности   -  person Basic    schedule 15.09.2014
comment
@Basic. Одна определенная вещь заключается в том, что раньше у меня была запись строки подключения MembershipReboot, которая указывала на MembershipReboot.mdf. Так что, возможно, он где-то закеширован.   -  person Matthew    schedule 15.09.2014
comment
@Basic - не повезло. К вашему сведению, здесь я использую LocalDb. Когда я отключаю LocalDb (например, переименовывая .exe), приложение дает сбой, указывая на то, что оно не может подключиться к экземпляру LocalDb.   -  person Matthew    schedule 16.09.2014
comment
Я сталкиваюсь с аналогичной ситуацией, когда я не упоминаю LocalDb ни в одной из своих строк подключения, но приложение все еще пытается прикрепить файл mdf, когда я выполняю Update-Database/Add-Migration. Надеюсь, кто-нибудь предложит решение.   -  person ahmed.eltawil    schedule 21.10.2014
comment
@AlbertEltawil - я очень рад, что вы опубликовали свой комментарий, потому что он напомнил мне, что я связался с Броком и получил от него ответ, который я публикую сейчас.   -  person Matthew    schedule 27.10.2014


Ответы (1)


Брок Аллен уже сталкивался с этой проблемой (эта проблема не имеет ничего общего с MembershipReboot или какой-либо конкретной библиотекой).

Да, я уже видел эту ошибку. Это когда вы удаляете экспресс-файлы sql (mdf и т. д.), но не удаляете БД с сервера БД — другими словами, вам нужно удалить базу данных из Sql Server Mgmt Studio или из проводника Sql Server в Visual Studio. .

Это помогло мне.

person Matthew    schedule 27.10.2014