ドメイン層での仕様パターンの予測-問題が予想されます

データアクセス層は、最もデリケートなトピックの1つです。
適切なデータアクセス層を作成するのは簡単な作業ではありません。 信じられないほど多くの実装例がありますが、適切なものはごくわずかです。
リポジトリテンプレートの実装をDALと見なすことはできますか?
これは、MS msdn.microsoft.com/en-us/library/ff649690.aspxが提供するものです。
画像
そして、こちらが地元の作品habrahabr.ru/post/52173です
オプションはかなり普通です。
しかし、私が見るとき
「リポジトリは、データベースにアクセスするためのファサードです。」
...
Domain Laye r- Repository - Storage Laye r(単なる用語)の分割を好む
レイヤーメンバー
ドメイン層

集約ルート
-martinfowler.com/bliki/DDD_Aggregate.html (簡単に言えば-リポジトリが知っているオブジェクトモデルオブジェクト)
問い合わせ
(実際に彼について話す)-サブジェクト領域の観点から形成されなければならない
リポジトリ

His下
リポジトリ
-martinfowler.com/eaaCatalog/repository.html
マッパー
-martinfowler.com/eaaCatalog/mapper.html (ストレージエンティティを集約ルートに、またはその逆に変換する方法を知っています)
うわー
-martinfowler.com/eaaCatalog/unitOfWork.html (これがなければ、エラーの余地はありませんが、それがあると)
ストレージ層

ストレージエンティティ
-これについて簡単に言うことはできません。
したがって、DALは6(マッパーがリポジトリの一部と見なされる場合は5)ブロックであり、それぞれが重要な役割を果たします。
クエリはオプションをフィルタリングするだけです。 リポジトリへのリクエストとして、仕様www.codeproject.com/Articles/670115/Specification-pattern-in-Csharpのアイデアがとても気に入っています。habrahabr.ru/post/171559あります。
フィルターの個別のクラスを形成することはまあまあですが、それをすべて使い始めると
query  = CarSpecifications.ByMark( mark ).
                 And( CarSpecifications.ByColor( color ).Not() ) ;
cars = carRepository.Get(query);

, . , , CarSpecifications.

x=>x.GroupName == groupName - :

public class UserQueryExtensions 
{
   public static IQueryable<User> WhereGroupNameIs(this IQueryable<User> users, strin name) 
   {
       return users.Where(u => u.GroupName == name);
   }
}


10 , .

Or Not. DI.
. , ( ,
new ExpressionSpecification(o => o.BrandName == BrandName.Samsung);)
, Repository .)
.
( Aggregation root).
, . – . Specification ,
, Repository ISpecification<D> Predicate<S> ?
.
S S -> D () D . , , .
: , , 50 .
S, GetAll… OutOfMemory.
, « , , ».

. , . 1
 1 S, S -> D, IsSatisfiedBy( D )
 2 S, S -> D, IsSatisfiedBy( D )
 3 S, S -> D, IsSatisfiedBy( D )
 K
 50000 S, S -> D, IsSatisfiedBy( D )


50 + 50 + 50 * n , =
( , , ) ( , SQL Dos ).
?
, , m ,
50 / m + 50 + 50 * n , = .

, , .

. … , ( ).

P.S.


, , GetAll S, S -> D , IsSatisfiedBy( D ).


Source: https://habr.com/ru/post/J260771/


All Articles