web-dev-qa-db-ja.com

独自の接続文字列を使用するようにASP.NET Identityを設定するにはどうすればよいですか?

EFを使用しているMVC5アプリがあります。 ASP.NET IDを追加したいのですが、ASP.NET IDの接続文字列が「DefaultConnection」を使用していることに気付きました。 _MVC5Entities_およびNOT DefaultConnection => (LocalDb)\v11.0で指定されている既存のデータベース(source = DILS-S1301; initial catalog = MVC5;)にASP.NET IDテーブルが作成されるようにするために必要なこと?ありがとう

_<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'.
_
23
ShaneKm

実際の質問は、「独自の接続文字列を使用するように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)など

12
jd4u

実際には、DefaultConnection connectionStringを目的の接続文字列に変更するだけです。新しいMVC 5プロジェクトに通常の設定を使用し、IDテーブルが新しいDBに存在しない場合、IDテーブルは自動的に作成されます。

接続文字列の一部を編集する必要はありません。また、conntectionString名を変更する必要があり、デフォルトの接続文字列を置き換えても問題がない場合を除き、DbContextコンストラクタを編集する必要はありません。

デフォルトの接続文字列を置き換えてもかまわない場合は、単に置き換えることができるはずです...これは私にとってはうまくいきました。

この記事も参考になりました: 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

4
Robert Noack