ABPテスト重合

 

公式サイトの例としては、チュートリアルABPは、アプリケーション層に直接IRpositoty <実体>で開始します。しかし、意志が右かというと、集約ルートアクセスは、集約ルートを通じてサービスを運営するストレージの最小単位であるエンティティである、その後、エンティティの追加および削除は、検索を変更することを集約ルートの場合、それは内部の集約ルートにする必要があります。

問題があることが、集約ルートエンティティを継承し,,彼はそれを保存する方法、倉庫ませんでしたか?

方法の一つ:データベースの移行が失敗したように、依存性注入、これは、動作しません。

          
1   パブリック クラス順序:AggregateRoot、IRepository <オーダー> 、ICreationAudited
 2      {
 3            [NotMapped]
 4          プライベート IRepository <オーダー> _repository { 得ますセット; }
 5          公共注文(IRepository <オーダー> リポジトリ)
 6          {
 7                  = _repository リポジトリ。
8          }
 9          公共 長いですかCreatorUserId { 取得しますセット; }
 10          公共のDateTime CREATIONTIME { GET; セット; }
 11          公衆リスト<のOrderItem>のOrderItem { 得ますセット; }
 12          パブリック 文字列備考{ 得ますセット; }
 13の         パブリックアドレスアドレス{ 得ますセット; }
 14  
15          公衆注文挿入(Orderエンティティ)
 16          {
 17              リターンエンティティ。
18          }
 19 }

 

 
方法2:継承されたストレージ・インターフェース、
パブリック クラス順序:AggregateRoot、IRepository <注文> 、ICreationAudited 
    { 
          
        公共 長いですかCreatorUserId { 取得しますセット; }
         公共のDateTime CREATIONTIME { 得ますセット; }
         公共の一覧<のOrderItem>のOrderItem { 取得しますセット; }
         パブリック 文字列備考{ 得ますセット; }
         パブリックアドレスアドレス{ 取得しますセット; } 

        公共秩序を挿入(Orderエンティティ)
        { 
            リターンエンティティ; 
        } 
}

 

   この問題は、それを呼び出すためにどのようにアプリケーション層のですか?アプリケーション層は、倉庫を出現させます。
 方法3:効果重合ルートインタフェース、継承およびストレージ:Test2をコードしています。
 
    パブリック クラスTest2を:Test2Repository、IAggregateRoot、ICreationAudited 
    { 
        公共 長いですかCreatorUserId { 取得しますセット; }
         公共のDateTime CREATIONTIME { 得ますセット; } 


        パブリック 文字列備考{ 得ますセット; } 

        パブリックいるICollection <IEventData> DomainEvents => スロー 新しい(NotImplementedExceptionを)

        公共 int型の Idを{ GET => スロー )(NotImplementedExceptionを。設定 =>スロー 新しいNotImplementedExceptionを(); } 

        パブリック ブールIsTransient()
        { 
            スロー 新しい)(NotImplementedExceptionします。
        } 
    }

 その層であるためEF Test2Repository依存しないコアは、一番下に、これが仕事に行くされていない一方で、コンパイラは、過去にならないように。

 

方法4:これはポリマーの根であり、その後のオーバーラップは、ライン上の露出IORDERインターフェイスは、アプリケーション層であるIORDERインターフェース、ストレージインターフェース、およびこのインタフェースを実装します。

  彼は後置の注文であることからIORDERは、依存アプリケーション層に注入することができます。
  場合ジェネリックメソッド呼び出し及びタイプ(パラメータまたは戻り値)として渡されます
      この実行は、保存されていません、
上記3が実行可能ではないが、以下の方法が有していてもよいです
成功する方法:それを使用して注入性。なお、重合は、注入枠への依存を根絶する必要があります。この例ではテストです
       IocManager.Register <試験>(DependencyLifeStyle.Transient)。
 
 
 

おすすめ

転載: www.cnblogs.com/qgbo/p/11261301.html