ASP.NET Web Api基础提供程序无法打开mdf已存在

时间:2018-08-05 14:02:02

标签: c# asp.net asp.net-mvc

这是我的解决方案结构:

应用

这是一个ASP.NET MVC应用程序。它在web.config中有此连接字符串:

Data Source=.\SQLEXPRESS;
   Initial Catalog=aspnet-Application-5cb5b1db-6c48-49c7-93b2-ba81ded39c1c;
   Integrated Security=SSPI;
   AttachDBFilename=|DataDirectory|\aspnet-Application-5cb5b1db-6c48-49c7-93b2-ba81ded39c1c.mdf
providerName="System.Data.SqlClient" 

它引用了ApplicationClassLibrary

ApplicationApi

这是一个Web API应用程序,其连接字符串在app.config中:

Data Source=.\SQLEXPRESS;
     Initial Catalog=aspnet-Application-5cb5b1db-6c48-49c7-93b2-ba81ded39c1c;
     Integrated Security=SSPI;
     AttachDBFilename=|DataDirectory|\aspnet-Application-5cb5b1db-6c48-49c7-93b2-ba81ded39c1c.mdf" 
providerName="System.Data.SqlClient" 

它引用了ApplicationClassLibrary

ApplicationClassLibrary

该项目包含dbContextIdentityModel,并且迁移从此处运行。

问题在于,当我运行ApplicationApi并使用邮递员调用此代码时:

public String CheckUser(string username, string password)
{
     var user = dbContext.Users.SingleOrDefault(u => u.UserName == username);
     return user.UserName;
}

我收到此错误:

  

数据库'C:\ Users \ uuu \ source \ repos \ Application \ Application \ App_Data \ aspnet-Application-5cb5b1db-6c48-49c7-93b2-ba81ded39c1c.mdf'已经存在。选择其他数据库名称。

     

无法将文件'C:\ Users \ uuu \ source \ repos \ Application \ ApplicationApi \ bin \ Debug \ aspnet-Application-5cb5b1db-6c48-49c7-93b2-ba81ded39c1c.mdf'作为数据库'aspnet-Application- 5cb5b1db-6c48-49c7-93b2-ba81ded39c1c'

所以基本上出于某种原因,我的ApplicationApi试图创建或使用现有的.mdf文件吗?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我找到了对我有用的解决方案。它来自此链接https://social.msdn.microsoft.com/Forums/sqlserver/en-US/6dfdcc22-7a81-4e8f-a947-c1ce6982d4b3/flustered-a-database-with-the-same-name-exists-or-specified-file-cannot-be-opened-or-it-is?forum=sqlexpress

它的意思是因为我已经具有创建db文件的父连接字符串,所以我仅应引用它。因此,我依赖于同一数据库的任何其他项目的连接字符串都应该像这样简单:

<add name="DefaultConnection" 
     connectionString="Data Source=.\SQLEXPRESS;Database=aspnet-Application-5cb5b1db-6c48-49c7-93b2-ba81ded39c1c;Integrated Security=SSPI;" 
     providerName="System.Data.SqlClient" />