14

オニオン アーキテクチャを順守する ASP.NET MVC 5 ソリューションに Identity 2.0 を実装しようとしています。

私はApplicationUser自分のコアに を持っています。

namespace Core.DomainModel
{
    public class ApplicationUser {...}
}

私のデータ アクセス レイヤーでは、Entity Framework 6.1 を使用しています。私のコンテキストはそこから派生しIdentityDbContext、ここに問題があります。ApplicationUserから派生する必要がありますMicrosoft.AspNet.Identity.EntityFramework.IdentityUser

namespace Infrastructure.DAL
{
    public class TestContext : IdentityDbContext<ApplicationUser> {...}
}

私のドメイン モデルはMicrosoft.AspNet.Identity.EntityFramework、タマネギの考えに反する参照をすべきではありません。

良い解決策は何ですか?

4

3 に答える 3

2

Core 名前空間から IUser を継承することができ、ユーザー マネージャーは満足するでしょう。IUserStore を独自の実装に置き換える必要があります。次に、ユーザーマネージャーを次のように初期化します。

new UserManager<ApplicationUser>(new YourNameSpace.UserStore<YourApplicationUser>()))
于 2014-08-12T15:11:12.037 に答える
1

問題は、Onion パターンを使用しようとしていることです。その基盤では、常に依存関係を構築します。

作成しているモデルの単一の責任で成功します。これは、レイヤーごとに個別のモデルを実装することにより、ドメイン駆動設計を適切に実行することで簡単に実行できます。

  • BusinessLogic.Models.ApplicationUser
  • プレゼンテーション.モデル.アプリケーションユーザー
  • DAL.Models.ApplicationUser

これらのモデルはすべて、100% 同じプロパティを持っていても (決して 100% ではありませんが) 異なるクラスであることに注意してください。欠点は、あるモデルから別のモデルにマッピングする必要がある場合があることですが、クリーンでモジュラーで拡張可能なアーキテクチャを本当に目指しているのであれば、それがその方法です。Automapper (またはExpressMapper ) を使用して、マッピングに必要なコードを回避できるヒント。

于 2015-07-28T16:07:34.080 に答える