[解決済み】ASP.NET Identity DbContextの混乱
質問
デフォルトのMVC 5アプリには、IdentityModels.csに次のコード片が付属しています。このコード片は、デフォルトテンプレートのすべてのASP.NET Identity操作用です。
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection")
{
}
}
Entity Frameworkでビューを使用して新しいコントローラをscaffoldし、ダイアログで"New data context..."を作成すると、次のようなものが生成されます。
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;
namespace WebApplication1.Models
{
public class AllTheOtherStuffDbContext : DbContext
{
// You can add custom code to this file. Changes will not be overwritten.
//
// If you want Entity Framework to drop and regenerate your database
// automatically whenever you change your model schema, please use data migrations.
// For more information refer to the documentation:
// http://msdn.microsoft.com/en-us/data/jj591621.aspx
public AllTheOtherStuffDbContext() : base("name=AllTheOtherStuffDbContext")
{
}
public System.Data.Entity.DbSet<WebApplication1.Models.Movie> Movies { get; set; }
}
}
EFを使用して別のコントローラ+ビューを雛形化した場合、例えばAnimalモデルの場合、次の新しい行が直下に自動生成されます。
public System.Data.Entity.DbSet<WebApplication1.Models.Movie> Movies { get; set; }
- このように
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;
namespace WebApplication1.Models
{
public class AllTheOtherStuffDbContext : DbContext
{
// You can add custom code to this file. Changes will not be overwritten.
//
// If you want Entity Framework to drop and regenerate your database
// automatically whenever you change your model schema, please use data migrations.
// For more information refer to the documentation:
// http://msdn.microsoft.com/en-us/data/jj591621.aspx
public AllTheOtherStuffDbContext() : base("name=AllTheOtherStuffDbContext")
{
}
public System.Data.Entity.DbSet<WebApplication1.Models.Movie> Movies { get; set; }
public System.Data.Entity.DbSet<WebApplication1.Models.Animal> Animals { get; set; }
}
}
ApplicationDbContext
(すべての ASP.NET Identity に関するもの) は
IdentityDbContext
を継承し、さらに
DbContext
.
AllOtherStuffDbContext
(自作用) は
DbContext
.
そこで質問なのですが。
この2つのうち、どちらが(
ApplicationDbContext
と
AllOtherStuffDbContext
) は、他のすべての自作モデルに使用すべきでしょうか?それとも、デフォルトの自動生成された
ApplicationDbContext
の基本クラスから派生しているので、これを使っても問題はないはずです。
DbContext
それとも、何らかのオーバーヘッドが発生するのでしょうか?使用すべきなのは
DbContext
オブジェクトの両方を使用することを検討すべきではないでしょう。
ApplicationDbContext
と
AllOtherStuffDbContext
を1つのアプリで使用できますか?または、ASP.NET Identityを使用したMVC 5のベストプラクティスは何ですか?
どのように解決するのですか?
私なら、IdentityDbContextを継承した単一のContextクラスを使用します。 こうすることで、IdentityDbContext の IdentityUser および Roles とあなたのクラスとの間の関係をコンテキストに認識させることができる。 IdentityDbContext にはほとんどオーバーヘッドがなく、基本的には通常の DbContext に 2 つの DbSet を加えたものです。1 つはユーザー用、もう 1 つはロール用です。
関連
-
[解決済み] [Solved] レイアウトページ "~/Views/Shared/_Layout.cshtml" で、以下のセクションが定義されているが、レンダリングされていない。"スクリプト"
-
[解決済み] asp.netのルーティングの問題
-
[解決済み] ASP.NETでページを更新するにはどうすればよいですか?(コードで勝手に再読み込みさせる)。
-
[解決済み] 403 - 閲覧禁止です。アクセスが拒否されました。提供された資格情報を使用してこのディレクトリまたはページを表示する権限がありません。
-
[解決済み] System.Web.HttpException: リクエストタイムアウト
-
[解決済み] 偽造防止用トークンは、別のクレームベースのユーザーのためのものだった
-
[解決済み] ASP.NET Ajaxクライアントサイドフレームワークのロードに失敗しました。
-
[解決済み] HTTPエラー 401.3 - 認証されていません
-
[解決済み] System.OutOfMemoryException' タイプの例外が発生しました。
-
[解決済み] ASP.NET Identity - HttpContextにはGetOwinContext用の拡張メソッドがありません。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】レスポンスのコンテンツタイプをCSVにする
-
[解決済み] ファイルまたはアセンブリ 'Microsoft.CodeDom.Providers.DotNetCompilerPlatform' を読み込むことができませんでした。
-
[解決済み] ファイルまたはアセンブリ 'Microsoft.CodeDom.Providers.DotNetCompilerPlatform' を読み込めませんでした。
-
[解決済み] ASP.NETでページを更新するにはどうすればよいですか?(コードで勝手に再読み込みさせる)。
-
[解決済み] System.Web.HttpException: リクエストタイムアウト
-
[解決済み] エンティティフレームワーク defaultconnectionfactory
-
[解決済み] リンクボタンでjQueryコール__doPostBack
-
[解決済み] aspnet_regiis.exeの動作について
-
[解決済み] プリコンパイルされた ASP.NET ウェブサイト プロジェクトで、ファイルまたはアセンブリ App_Web_ * を読み込めなかった
-
[解決済み】ASP.NET Identityを使用する際にテーブル名を変更するには?