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!]

Другие вопросы по тегам