ASP.NET核心:尝试为文件附加自动命名的数据库失败

ASP.NET Core: An attempt to attach an auto-named database for file failed

我知道这个问题已经被问过很多次了,但我仍然找不到与我的情况类似的问题。

我正在处理 ASP.NET 核心 WebAPI 项目。 一切都很好,如果我把它搞砸了,我真的无法重现。

应该使用从 appsettings.Development.json 文件中检索到的连接字符串进行调试:

"DefaultConnection":
  "Data Source=(localdb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|MyProj.mdf"

调用 context.Database.CreateIfNotExists(); 时,出现以下错误:

System.Data.SqlClient.SqlException 发生(HResult 0x80131904):

An attempt to attach an auto-named database for file C:\Users\Shimmy\Documents\Visual Studio 2017\Projects\MyProj\MyProj.Api\AppData\MyProj.mdf failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share.
Source: .Net SqlClient Data Provider
StackTrace: at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)

我是 运行 作为 Kestrel 控制台应用程序的 WebAPI。

这是我尝试过的方法:

AttachDbFilename 标志替换为 Initial Catalog=MyProj,引发此错误:

System.Data.SqlClient.SqlException occurred
HResult: 0x80131904
Message: Cannot open database "MyProj" requested by the login. The login failed. Login failed for user 'SHIMMY-PC\Shimmy'.
Source: .Net SqlClient Data Provider
StackTrace: at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)

但是 SHIMMY-PC\Shimmy 确实出现在实例的用户中:

只有预先创建数据库文件,我才能让它工作,这不是我真正想要的,但我不会为此争吵。

顺便说一句,我找到了一个方便的方法 drop/create 数据库,不会造成太多麻烦。 我打开开发人员 CLI 并导航到 project/solution 文件夹,然后调用 dotnet ef database,首先是 drop,然后是 update

在.net core环境下,绕过auto-naming部分应该可以修复。只需添加:

Initial Catalog=MyNotAutoNamedDb;

连接字符串中的某处,它应该可以工作。

[注意:不要替换AttachDbFilename!]