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="data source=DILS-S1301;initial catalog=MVC5;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" 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="data source=DILS-S1301;initial catalog=MVC5;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" 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'.
_
実際の質問は、「独自の接続文字列を使用するように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)
など
実際には、DefaultConnection connectionStringを目的の接続文字列に変更するだけです。新しいMVC 5プロジェクトに通常の設定を使用し、IDテーブルが新しいDBに存在しない場合、IDテーブルは自動的に作成されます。
接続文字列の一部を編集する必要はありません。また、conntectionString名を変更する必要があり、デフォルトの接続文字列を置き換えても問題がない場合を除き、DbContextコンストラクタを編集する必要はありません。
デフォルトの接続文字列を置き換えてもかまわない場合は、単に置き換えることができるはずです...これは私にとってはうまくいきました。