1

IChocolateRepository というリポジトリがあります。

これは、基本的なリポジトリ機能 (FindAll、Delete、Add など) を定義する汎用リポジトリ インターフェイス IRepository<> から派生します。

ここで、「提供された日付より前の有効期限データを持つすべてのチョコレートをデータベースから」削除するコードを記述する必要があります (ExpiryDate が Chocolate モデル クラスの null 非許容プロパティであると仮定します)。

これはリポジトリに属しますか?

また、サンプル実装はどのようになりますか? (私はEF CTP5を使用しています)

4

3 に答える 3

2

私はそうは思わない。

これは ではなく、これらを使用しRepositoryて を操作するクラスに属します。TransactionsRepositories

これが単純すぎるアプリケーションでない限り、複雑さを避けるために別のレイヤーを避ける方がはるかに優れています。

于 2011-01-29T07:04:59.900 に答える
2

基本インターフェースに既に Remove(T item) メソッドがある場合は、必要を満たすために Remove(Predicate<'T'> condition) を追加しても問題ありません。

したがって、特定の 1 つのアイテムを削除する代わりに、非常に汎用的なインターフェイスを使用して、指定された述語を満たすすべてのものを削除できます。

于 2011-01-29T07:11:26.363 に答える
0

私は小さなプロジェクト (大学の学位を取得するための FYP) を持っていましたが、時間の制約のために、より複雑なデータ メソッドをリポジトリにハード コードして追加したことをよく知りませんでした。

個人的には、Andrei Taptunov のアイデアと述語を使用して、データ アクセス コードがリポジトリ クラスに含まれるようにします。とにかく述語のように機能する、ドメイン駆動の設計書に書かれたトランザクションを見てきました。トランザクションは達成したいことを記録し、リポジトリはその要求に対応します。

于 2011-01-29T22:43:28.857 に答える