現実の世界では、コントローラーはさまざまなデータベーステーブルやその他のデータストアからのデータを使用する必要がある可能性があります。例えば:
[Authorize]
public class MembersController : Controller
{
ICourseRepository repCourse;
IUserCourseRepository repUserCourse;
IMember member;
public MembersController(ICourseRepository repCourse, IUserCourseRepository repUserCourse, IMember member)
{
this.repCourse = repCourse;
this.repUserCourse = repUserCourse;
this.member = member;
}
それで:
テーブルごとにリポジトリを使用する必要がありますか?
これが集合体の概念が作用するところだと思いますか?アグリゲートごとに1つのリポジトリが必要ですか?
コントローラのコンストラクタに必要な数のリポジトリを追加するだけですか?
これは私のデザインが間違っているというサインですか?
ノート:
IMemberインターフェースは、基本的に、メンバーシッププロバイダーに良い顔をするヘルパーオブジェクトを表します。つまり、すべてのコードを1か所に配置します。例えば:
Guid userId;
public Guid UserId
{
get
{
if (userId == null)
{
try
{
userId = (Guid) Membership.GetUser().ProviderUserKey;
}
catch { }
}
return userId;
}
}
それに関する1つの問題は、確かにこの種の出力をキャッシュすることです。別の質問が来るのを感じることができます。
編集:
私はDIにNinjectを使用しており、DI、DDD、およびTDD全体でかなり売れています。まあ、ある種。私も実用主義者になろうとしています...