我知道这个问题已被多次询问,但我仍然无法找到类似于我的情况的问题。
我正在开发一个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数据提供商
的栈跟踪: 在System.Data.SqlClient.SqlInternalConnection.OnError(SqlException异常,Boolean breakConnection,Action`1 wrapCloseInAction)
我将WebAPI作为Kestrel控制台应用程序运行。
以下是我尝试的内容:
Integrated Security=True
或MultipleActiveResultSets=True
添加到连接字符串用AttachDbFilename
替换Initial Catalog=MyProj
标记,引发了此错误:
发生了System.Data.SqlClient.SqlException HResult :0x80131904
消息:无法打开数据库" MyProj"登录请求。登录失败。 用户登录失败' SHIMMY-PC \ Shimmy'。
来源:。Net SqlClient数据提供商
的栈跟踪: 在System.Data.SqlClient.SqlInternalConnection.OnError(SqlException异常,Boolean breakConnection,Action`1 wrapCloseInAction)
但 SHIMMY-PC \ Shimmy 确实出现在实例的用户中:
答案 0 :(得分:0)
我只有在预先创建数据库文件时才能使用它,这不是我想要的,但我不会为它而战。
BTW,我找到了一种方便的方法来删除/创建不会造成太多麻烦的数据库。 我打开开发人员CLI并导航到项目/解决方案文件夹,然后调用dotnet ef database
,先使用drop
然后update
。
答案 1 :(得分:0)
在.net核心环境中,您应该能够通过绕过auto-naming
部分来对其进行修复。只需添加:
Initial Catalog = MyNotAutoNamedDb;
连接字符串中的某个位置,它应该可以工作。
[注释:请勿替换AttachDbFilename
!]