2

我知道这个问题已经被问过很多次了,但我仍然无法找到与我的场景类似的问题。

我正在开发一个 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:在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException 异常,布尔 breakConnection,Action`1 wrapCloseInAction)

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

这是我尝试过的:

  • 在连接字符串中添加Integrated Security=TrueMultipleActiveResultSets=True
  • 添加了连接字符串的完整路径
  • 删除和重新创建MSSQLLocalDB实例
  • 重新安装 SQL LocalDB

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

System.Data.SqlClient.SqlException 发生
HResult:0x80131904
消息:无法打开登录请求的数据库“MyProj”。登录失败。用户 'SHIMMY-PC\Shimmy' 登录失败。
来源:.Net SqlClient 数据提供程序
StackTrace:在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException 异常,布尔 breakConnection,Action`1 wrapCloseInAction)

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

在此处输入图像描述

4

2 回答 2

1

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

初始目录=MyNotAutoNamedDb;

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

[注意:请勿更换AttachDbFilename!]

于 2018-09-22T20:29:13.793 回答
0

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

顺便说一句,我找到了一种方便的方法来删除/创建不会造成太多麻烦的数据库。我打开开发人员 CLI 并导航到项目/解决方案文件夹,然后调用dotnet ef database,首先使用dropthen update

于 2017-09-10T16:20:54.247 回答