C# 如何在ASP.Net标识中设置连接字符串

C# 如何在ASP.Net标识中设置连接字符串,c#,asp.net,asp.net-mvc,entity-framework,asp.net-mvc-5,C#,Asp.net,Asp.net Mvc,Entity Framework,Asp.net Mvc 5,我有个问题。我创建了一个项目asp.NETMVC5。我将所有库owin和其他类库中的库迁移。 我使用这个类库来创建user、loggin和其他。 但是现在,我看到mdf是在app_数据中创建的,当我创建一个用户或其他用户时,问题是数据库不是更改,也不是创建 我认为所有信息都在mdf文件中,因为如果重新启动应用程序,日志就可以工作。 我在这篇文章中尝试了许多解决方案: (在web.config中添加/删除attachfile,停止/删除sqllocaldb)但没有任何效果 My web.confi

我有个问题。我创建了一个项目asp.NETMVC5。我将所有库owin和其他类库中的库迁移。 我使用这个类库来创建user、loggin和其他。 但是现在,我看到mdf是在app_数据中创建的,当我创建一个用户或其他用户时,问题是数据库不是更改,也不是创建

我认为所有信息都在mdf文件中,因为如果重新启动应用程序,日志就可以工作。 我在这篇文章中尝试了许多解决方案: (在web.config中添加/删除attachfile,停止/删除sqllocaldb)但没有任何效果

My web.config是主应用程序(不在库类中),如下所示:

<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=(localdb)\v11.0;initial catalog=WebMVCDataBase;integrated security=True;pooling=False;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />
</connectionStrings>
<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
<add key="userconnection" value="Data Source=(localdb)\v11.0;initial catalog=WebMVCDataBase;integrated security=True;pooling=False;MultipleActiveResultSets=True" />
</appSettings>
  public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("userconnection", throwIfV1Schema: false)
    {
        //Database.SetInitializer<ApplicationDbContext>(new CreateDatabaseIfNotExists<ApplicationDbContext>()); I try this but not work
    }


    public static ApplicationDbContext Create()
    {

        return new ApplicationDbContext();
    }
}

我的应用程序dbcontext如下所示:

<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=(localdb)\v11.0;initial catalog=WebMVCDataBase;integrated security=True;pooling=False;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />
</connectionStrings>
<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
<add key="userconnection" value="Data Source=(localdb)\v11.0;initial catalog=WebMVCDataBase;integrated security=True;pooling=False;MultipleActiveResultSets=True" />
</appSettings>
  public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("userconnection", throwIfV1Schema: false)
    {
        //Database.SetInitializer<ApplicationDbContext>(new CreateDatabaseIfNotExists<ApplicationDbContext>()); I try this but not work
    }


    public static ApplicationDbContext Create()
    {

        return new ApplicationDbContext();
    }
}
public类ApplicationDbContext:IdentityDbContext
{
公共应用程序上下文()
:base(“userconnection”,throwifvv1schema:false)
{
//SetInitializer(new CreateDatabaseIfNotExists());我尝试了这个,但没有成功
}
公共静态应用程序上下文创建()
{
返回新的ApplicationDbContext();
}
}

感谢您的帮助

显然,当您第一次创建解决方案/项目数据库时,它是在项目的父目录中创建的。之后,当您构建/调试解决方案时,它会将数据库添加到Bin/debug目录中。调试时对数据所做的任何更改都是在调试数据库中进行的。但是,每次在VS中运行应用程序时,它都会从父目录中提取数据,而父目录从未收到调试时所做的更改,因为这些更改实际上是在调试数据库中进行的

•In database explorer
    •Right click on the database
    •Select modify connection
    •Advanced options
    •Search for the property AttachDbFileName
    •Change it to the DB from debug folder c:...\bin\debug\DB.mdf
    •Once you point your database to the Debug directory, in VS Server Explorer, you can then delete the database in the solution explorer and all updates will transpire in the Debug database.
对于您的错误,请这样做

1.From Package Manager Console run:

sqllocaldb.exe stop v11.0

sqllocaldb.exe delete v11.0


2.Run your project

3.Register a user

请检查此

标识从连接字符串标记读取连接字符串值。换句话说,它不会读取appSettings中的userconnection

因此,您需要将连接字符串名称重命名为DefaultConnection。这两个连接字符串在您的场景中是相同的


表示:无法将mdf附加到数据库,因为数据库与其他应用程序连接。因为当我尝试这个命令时:“sqllocaldb.exe stop v11.0 sqllocaldb.exe delete v11.0”。我使用以下命令删除所有数据库:请检查我的更新答案。尝试为数据库指定一个不同的名称或检查步骤。当我使用此命令时,在运行项目后,注册工作,但不创建数据库…如果停止应用程序并运行项目,新用户将工作。尝试为数据库指定一个不同的名称。有时,在第二次尝试创建同名数据库时,SQL Express可能会遇到问题。有一种方法可以使用SQL Server Management Studio解决此问题,但通常使用不同的数据库名称更容易。非常感谢,我在许多帖子中搜索,但没有找到解决方案:)谢谢:)