0

SimpleMembership と、ASP.NET MVC Web サイトでのその使用について、少し混乱しています。

私のプロジェクトは現在、「データ アクセス」と呼ばれるクラス ライブラリにあるコード ファーストの dbcontext を使用しています。

「Data Access」で宣言された dbcontext で使用されるすべてのエンティティ/オブジェクトを含む「DomainObjects」という別のクラス ライブラリがあります。

「DomainFactory」という別のプロジェクトがあり、その名前が示すように、データ コンテキストへのアクセス、データの操作などのメソッドを公開しています。

そして最後に、「Web」と呼ばれる MVC 4 アプリケーションがあります (このアプリケーションは実際には IoC を使用して「DomainFacotry」プロジェクトで宣言されたメソッドを呼び出しますが、これがここで達成しようとしていることに関連するとは思いません)。

私の MVC アプリケーションは、セキュリティを追加したい段階になりました。

ベースのインターネット アプリケーション テンプレートを使用すると、AccountModel.cs ファイルで宣言された UsersContext があり、このコンテキストがアプリケーション全体で頻繁に使用されていることがわかります。これは私が望む動作ではありません。テストの容易性と関心の分離のために、すべての認証ロジックをドメイン クラスで処理したいと考えていますが、これについてどうすればよいかわかりません。次の質問に答えていただければ幸いです。

  1. 私の MVC アプリケーションには、作成した dbcontext への参照がないため、データベースを再生成して再シードするにはどうすればよいですか? WebActivator を使用する必要がありますか? これは好ましい方法ですか?

  2. すべての認証ロジックを DomainFactory プロジェクトに移動する最善の方法は何ですか? これを行った場合、どのように対処しましたか?

  3. 上記の方法を使用する際に注意することはありますか?

どうもありがとう

4

1 に答える 1

1

ここでの最大の問題は、複数のコンテキストがあることです。EFは複数のコンテキストでうまく機能せず、それらを機能させたとしても、現時点では1つのコンテキストしか移行できないため、他のコンテキストは既存のDBOを参照するだけです。

ただし、それ以外は、認証をクラスライブラリに移動することについて複雑なことは何もありません。ASPもEFも、モデルがどこにあるかを気にします。DbContextがそれらへの参照を取得できる限り、問題はありません。その点で、DbContextをクラスライブラリに保存することもできますが、EFはスタートアッププロジェクトでDbContextインスタンスのみを自動的に表示することに注意してください。クラスライブラリに入れる場合は、毎回、add-migrationまたはupdate-databaseで見るように指示する必要があります-ProjectName 'MyClassLibrary'

于 2013-03-05T15:01:38.263 に答える