2017-11-08 7 views
0

私はアプリケーションテーブルを持つ既存のデータベースを持っています。私はMVC5を使用してアプリケーションの新しいバージョンを構築しようとしています。私は、アプリケーションの一部としてAspNet Identityフレームワークを使用することに決めました。既存のデータベースのAspNet ID ApplicationDbContext

プロジェクトを作成しながら、私が使用Visual Studioのテンプレートファイルを追加「IdentityModel.cs」とクラス

public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
    { 
    public ApplicationDbContext() 
    : base("DefaultConnection", throwIfV1Schema: false) 
    { 
    } 
    } 

だから私のようなコードを使用して、テーブルのユーザー、ロールおよびその他のASPNETアイデンティティのテーブルにアクセスすることができます:ため、Microsoftは、クラス "アプリケーション DbContext"(とない:例えばアイデンティティ DbContext)に付けた名前の

var context = new ApplicationDbContext(); 
context.Users.ToList(); 

、私はそのクラスがAspNet Identityフレームワークに関係していない既存のすべてのテーブルの "アクセサ"として使用されるべきかどうか疑問に思っていますか?

"ApplicationDbContext"というクラスの一般的な名前はありません。私は自分のアプリケーションの他のテーブルにアクセスするために私のソリューションに追加したばかりのエンティティフレームワークプロジェクトを使用しましたが、 "ベストプラクティス"は何ですか?同じAspNet Identity ApplicationDbContextアクセサを使用するか、または2つのDbアクセサ(AspNet IDテーブルの1つと残りのテーブル(Dbファースト)のために作成したエンティティフレームワークの1つ)を使用するには

私は、すべてのテーブル、AspNetのアイデンティティと私が別々のEntityFramework edmxファイルで持っているすべてのテーブルのすべてのために同じdbContextを使用するより多くの論理を見ます。どのように私は1つのdbContextで両方を使用できますか?

+1

単一のコンテキストを使用します。既存のコンテキストにアイデンティティ・フレームワーク・テーブルを追加するか、生成されたコンテキストにテーブルを追加します。違いはありません。コンテキストの名前が気に入らない場合は、名前を変更してください。テンプレートはちょうど開始点を生成します、それは標準ではありません。 –

+0

@CraigW。あなたのコメントをありがとう、私はエンティティフレームワークedmxファイルをアプリケーションテーブルのテストのために使用しています。どのように私はasp.netのアイデンティティの同じ同じdbコンテキストを使用することができますか? – Omtechguy

答えて

0

AspNet IDはユーザーマネージャのようなものを提供しますので、問題を解決するはずです。あなたは本当のテーブルで操作する必要はありません、AspNetのアイデンティティは、テーブルの構造をカバーする必要があり、高いレベルの操作を行うことができます。あなたのユーザーモデルはIdentityModelクラスを継承する必要があります。その後、独自のカスタムモデルを構築することができます。

+0

コメントありがとうございます。私はそれを知っている..私は別のものを理解しようとしている、 – Omtechguy

0

IdentityFrameworkcode-firstエンティティフレームワークを使用しているのに対し、以前のedmxデザイナーのアプローチを使用する代わりに、アプリケーションの残りの部分でコードファーストを使用していません。私は2つを1つの文脈に混ぜようとはしません。

さらに、ApplicationDbContextIdentityDbContextから継承されているので、私はそれを残しておきます。基本クラスはOnModelCreatingValidateEntityのようなものを実装します。他のコンテキストをIdentityFrameworkに使用したい場合は、他のコンテキストをIdentityDbContextから継承する必要があります。これは実際にはIDコンテキストではないため不正なセマンティクスであるか、またはこれらを実装する必要がありますメソッドを手動で作成します。

しかし、アイデンティティフレームワークのコンテキストを、他のエンティティフレームワークアイテムと同じデータベースに向けるのは簡単です。 ApplicationDbContextにある"DefaultConnection"を、他のものに使用する接続文字列の名前と置き換えてください。

関連する問題