ASP.net标识 - 登录/添加用户重复数据库

时间:2015-04-21 20:01:22

标签: sql asp.net asp.net-identity

使用ASP.Net Identity注册表单

创建此Web表单 每次我尝试登录/注册新用户时都会出现

问题,错误:“无法创建文件'D:\ WebSite1 \ App_Data \ Database.mdf',因为它已经存在。”

似乎Identity系统每次尝试创建新的DataBase,而不是在第一次创建用户时使用创建的DataBase。

来自web.config:

  <entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
  <parameters>
    <parameter value="Data Source=(localdb)\v11.0; AttachDbFileName=|DataDirectory|\Database.mdf; Integrated Security=True; MultipleActiveResultSets=True" />
  </parameters>
</defaultConnectionFactory>
<providers>
  <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>

  <connectionStrings>
<add name="db_mainConnectionString" connectionString="Data Source=(localdb)\v11.0; AttachDbFileName=|DataDirectory|\Database.mdf; Integrated Security=True; MultipleActiveResultSets=True"
  providerName="System.Data.SqlClient" />

    <sessionState mode="Custom" customProvider="DefaultSessionProvider">
  <providers>
    <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="db_mainConnectionString" />
  </providers>
</sessionState>

1 个答案:

答案 0 :(得分:0)

问题似乎与DatabaseInitializer策略一起使用,与Asp.net身份提供程序一起使用。如果您首先使用代码,那么它会根据指定的DatabaseInitializer策略自动创建数据库。这就是为什么每次运行应用程序时应用程序都在创建数据库的原因。

有关DatabaseInitializer的详细信息,请参阅此文章。

您可以通过enabling database migrations摆脱这个问题。迁移允许您仅将架构中的更改传播到数据库,而不是每次检测到模型中的新更改时都删除并创建数据库。