ASP.NET Core:尝试为文件附加自动命名数据库失败
我知道这个问题已经被问过很多次了,但我仍然找不到一个与我的场景类似的问题 我正在从事一个ASP.NET核心WebAPI项目。 这一切都很好,我真的无法重现如果我把事情搞砸了会发生什么 它应该使用以下连接字符串进行调试,该字符串从appsettings.Development.json文件中检索: 调用ASP.NET Core:尝试为文件附加自动命名数据库失败,asp.net,sql-server,localdb,sql-server-2016-express,sql-server-2016-localdb,Asp.net,Sql Server,Localdb,Sql Server 2016 Express,Sql Server 2016 Localdb,我知道这个问题已经被问过很多次了,但我仍然找不到一个与我的场景类似的问题 我正在从事一个ASP.NET核心WebAPI项目。 这一切都很好,我真的无法重现如果我把事情搞砸了会发生什么 它应该使用以下连接字符串进行调试,该字符串从appsettings.Development.json文件中检索: 调用context.Database.CreateIfNotExists()时,我得到以下错误: 发生System.Data.SqlClient.SqlException(HResult 0x80131
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数据提供程序
堆栈跟踪:
位于System.Data.SqlClient.SqlInternalConnection.OneError(SqlException异常,布尔断开连接,操作'1 wrapCloseInAction)
我将WebAPI作为Kestrel控制台应用程序运行
以下是我尝试过的:
- 向连接字符串添加
integratedsecurity=True
或MultipleActiveResultSets=True
- 已将完整路径添加到连接字符串
- 删除并重新创建MSSQLLocalDB实例
- 重新安装SQL LocalDB
将AttachDbFilename
标志替换为Initial Catalog=MyProj
,引发以下错误:
System.Data.SqlClient.SqlException发生
HResult:0x80131904
消息:无法打开登录请求的数据库“MyProj”。登录失败。
用户“SHIMMY-PC\SHIMMY”登录失败。
来源:.Net SqlClient数据提供程序
堆栈跟踪:
位于System.Data.SqlClient.SqlInternalConnection.OneError(SqlException异常,布尔断开连接,操作'1 wrapCloseInAction)
但SHIMMY-PC\SHIMMY确实出现在实例的用户中:
只有在预先创建数据库文件的情况下,我才能让它工作,这并不是我真正想要的,但我不会为此争吵
顺便说一句,我找到了一种简便的方法来删除/创建数据库,而不会造成太多麻烦。
我打开developer CLI并导航到project/solution文件夹,然后调用dotnet ef database
,首先使用drop
然后使用update
在.net core环境中,您应该能够通过绕过自动命名部分来修复它。只需添加:
初始目录=MyNotAutoNamedDb
连接字符串中的某个位置,它应该可以工作
[注意:不要替换AttachDbFilename
!]
"DefaultConnection":
"Data Source=(localdb)\\MSSQLLocalDB;AttachDbFilename=|DataDirectory|MyProj.mdf"