如何在ASP.Net Identity中设置连接字符串

时间:2015-05-28 13:44:37

标签: c# asp.net asp.net-mvc entity-framework asp.net-mvc-5

我有问题。我创建了一个项目asp.net mvc 5.我迁移了所有库owin和其他类库。 我使用这个类库来创建用户,登录和其他。 但是现在,我发现在app_data中创建了一个mdf,当我创建一个用户或其他用户时,问题是数据库不是更改而不是创建。

我认为所有信息都在mdf文件中,因为如果重新启动应用程序,则loggin工作。 我在这篇文章上尝试了很多解决方案 Cannot attach the file *.mdf as database(在web.config中添加/删除attachfile,停止/删除sqllocaldb)但没有任何作用。

我的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>

和我的应用程序dbcontext是这样的:

  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();
    }
}

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

Identity从 connectionStrings 标记读取连接字符串值。换句话说,它不会读取 appSettings 中的用户连接

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

enter image description here

答案 1 :(得分:0)

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

$("#startgeocomplete").geocomplete({
details: "start",
detailsAttribute: "data-start"
types: ["geocode"],
country: 'gb'
});

$("#endgeocomplete").geocomplete({
details: "end",
detailsAttribute: "data-end",
types: ["geocode"],
country: 'gb'
});

对于您的错误,请执行此操作

•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.

请检查此link