24

我有一个使用 EF 的 MVC5 应用程序。我想添加 ASP.NET 标识,我注意到 ASP.NET 标识的连接字符串使用“DefaultConnection”。我需要做什么才能在我已经存在的数据库(source=DILS-S1301;initial catalog=MVC5;)中创建 ASP.NET Identity 表,如MVC5Entitiesand NOT中指定的那样DefaultConnection => (LocalDb)\v11.0?谢谢

<connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-MySuperAwesomeMVCApp-20131105011429.mdf;Initial Catalog=aspnet-MySuperAwesomeMVCApp-20131105011429;Integrated Security=True" providerName="System.Data.SqlClient"      />
    <add name="MVC5Entities" connectionString="metadata=res://*/Models.Mvc5Model.csdl|res://*/Models.Mvc5Model.ssdl|res://*/Models.Mvc5Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=DILS-S1301;initial catalog=MVC5;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>

我尝试像这样修改“DefaultConnection”:

<connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=DILS-S1301;AttachDbFilename=|DataDirectory|\MVC5.mdf;Initial Catalog=MVC5;Integrated Security=True" providerName="System.Data.SqlClient" />
    <add name="MVC5Entities" connectionString="metadata=res://*/Models.Mvc5Model.csdl|res://*/Models.Mvc5Model.ssdl|res://*/Models.Mvc5Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=DILS-S1301;initial catalog=MVC5;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>

但现在我得到一个错误:

Database 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\MVC5.mdf' already exists. Choose a different database name.
Cannot attach the file 'C:\Users\blah\Documents\Visual Studio 2013\Projects\MySuperAwesomeMVCApp\MySuperAwesomeMVCApp\App_Data\MVC5.mdf' as database 'MVC5'.
4

2 回答 2

13

实际问题应该是“如何设置 ASP.NET Identity 以使用我自己的连接字符串?”

如果以上是您问题的正确摘要,那么以下是答案。

ASP.NET Identity 使用 EntityFramework 来完成与数据库相关的任务。因此,您可以根据需要使用以下选项。

选项 1:EntityFramework 的默认连接字符串可以使用 web.config 中的以下代码片段进行设置

<entityFramework>
  <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
    <parameters>
      <parameter value="Data Source=(localdb)\v11.0; Integrated Security=True; MultipleActiveResultSets=True" />
    </parameters>
  </defaultConnectionFactory>
</entityFramework>

选项 2:以编程方式,您还可以将 ConnectionString 名称传递给 DbContext 的构造函数。喜欢new ApplicationDbContext(MyConnectionString)

于 2013-11-06T15:32:13.193 回答
5

实际上,您所要做的就是将 DefaultConnection connectionString 更改为您想要的连接字符串。如果您对新的 MVC 5 项目使用正常设置,并且新数据库中不存在标识表,它们将在那里自动创建。

您不必编辑连接字符串的部分,也不必编辑 DbContext 构造函数,除非您想更改 conntectionString 名称并且无法替换默认连接字符串。

如果您可以替换默认连接字符串,您应该可以替换它......这对我有用。

我发现这篇文章也很有帮助: http ://www.typecastexception.com/post/2013/10/27/Configuring-Db-Connection-and-Code-First-Migration-for-Identity-Accounts-in-ASPNET- MVC-5-and-Visual-Studio-2013.aspx

于 2014-06-12T03:35:06.813 回答