ASP.NET Core: попытка присоединить базу данных с автоматическим именем для файла не удалась
Я знаю, что этот вопрос задавался много раз, но я все еще не могу найти вопрос, похожий на мой сценарий.
Я работаю над проектом ASP.NET Core WebAPI. Все работало хорошо, и я не могу воспроизвести, что если я вообще сделаю, чтобы испортить это.
Предполагается, что для отладки используется строка подключения, которая извлекается из файла appsettings.Development.json:
"DefaultConnection":
"Data Source=(localdb)\\MSSQLLocalDB;AttachDbFilename=|DataDirectory|MyProj.mdf"
При звонке context.Database.CreateIfNotExists();
Я получаю следующую ошибку:
Произошло исключение System.Data.SqlClient.SqlException (HResult 0x80131904):
Попытка присоединить базу данных с автоматическим именем для файла C:\Users\Shimmy\Documents\Visual Studio 2017\Projects\MyProj\MyProj.Api\AppData\MyProj.mdf. База данных с тем же именем существует, или указанный файл не может быть открыт, или он находится на общем ресурсе UNC.
Источник: поставщик данных.Net SqlClient
StackTrace: at System.Data.SqlClient.SqlInternalConnection.OnError (исключение SqlException, логическое breakConnection, действие`1 wrapCloseInAction)
Я использую WebAPI как консольное приложение Kestrel.
Вот что я попробовал:
- Добавление
Integrated Security=True
или жеMultipleActiveResultSets=True
к строке подключения - Добавлен полный путь к строке подключения
- Удаление и воссоздание экземпляра MSSQLLocalDB
- Переустановка SQL LocalDB
Замена AttachDbFilename
флаг с Initial Catalog=MyProj
, поднял эту ошибку:
System.Data.SqlClient.SqlException
HResult: 0x80131904
Сообщение: Невозможно открыть базу данных "MyProj", запрошенную при входе в систему. Ошибка входа. Не удалось войти в систему для пользователя 'SHIMMY-PC\Shimmy'.
Источник: поставщик данных.Net SqlClient
StackTrace: at System.Data.SqlClient.SqlInternalConnection.OnError (исключение SqlException, логическое breakConnection, действие`1 wrapCloseInAction)
Но SHIMMY-PC \ Shimmy, похоже, принадлежит пользователям экземпляра:
2 ответа
Я заставлю его работать, только если я предварительно создаю файл базы данных, что на самом деле не то, что я хочу, но я не буду бороться за это.
Кстати, я нашел удобный способ удалить / создать базу данных, которая не доставляет столько хлопот. Я открываю CLI разработчика и перехожу в папку проекта / решения, затем вызываю dotnet ef database
сначала с drop
затем update
,
В среде ядра.net вы сможете исправить это, минуя auto-naming
часть. Просто добавь:
Исходный каталог =MyNotAutoNamedDb;
где-то в строке подключения, и это должно работать.
[примечание: не заменяйте AttachDbFilename
!]