ビルド時にリポジトリがMVCコントローラに注入されるかなり標準的なリポジトリパターンがあります。リポジトリはAppDomainごとに1回初期化され、他のコントローラと共有されます。リポジトリはHibernate ISessionsとICriteriaを使用してデータベースにアクセスしますが、ICriteriaを直接受け入れる代わりにListXYZメソッドを使用してアクセスが公開されます。リポジトリからの結果を制限する
certianのケースで返される結果を制限するためのきちんとした方法が必要です。たとえば、アクションが呼び出されたときにのみ知られている、特定のマーケットのすべての商品をリストすることがあります。
多くのオーバーロードされたメソッドにつながるので、ListXYZメソッドを呼び出すたびにこの制限を渡したくありません。理想的には、以前のようにリポジトリにアクセスできるようにしたいが、制限が適用されている。次のようなもの:
var rep = new ProductRepository().ApplyRestriction(new MarketRestriction("xy"));
var list = rep.ListInCategory("shirts");
どのようにすればいいですか?それとも私は自分自身のために複雑すぎるのですか?
ありがとう、私はそれが実装するにはあまりにも複雑になると思ったので、これは長い間避けました。しかし、一度それを覚えれば、それはあまりにも悪いように見えず、とてもうまく機能します。 – kaa