他のエンティティと何らかのリレーションを持つエンティティがあり、これらのエンティティの一部だけを読み込んで別のビューに表示するとします。コントローラーに読み込むデータを定義することをお勧めしますか?
たとえば、このエンティティ与えられた:ビューで
public class Category
{
public int id;
public Category child;
public Category parent;
}
は、あなたがそれを示していないので、あなたが「親」プロパティをロードしたくない「ShowChild」。
このシナリオでは、私が望むプロパティだけを満たすDBからエンティティを読み込むために、とても良い "システム"をリポジトリに実装しました。それはこのように動作します:
カテゴリーカテゴリ= repo.FindCategory(ID、(int型)(LoadLevel.basic | LoadLevel.Child))
だから今は、ロードされただけで、IDと子の特性を持つカテゴリのインスタンスを持っています。
私がここで直面しているジレンマは、私がserviceLayer(ここにあるはずです)にLoadLevelを定義すると、私のサービスクラスに2つのメソッド "LoadCategoryWithChild"と "LoadCategoryWithParent"各ビュー(DRY違反?)。
public class CategoryService
{
public Category LoadCategoryWithChild(int id)
{
int loadlevel = (int) (LoadLevel.Basic | LoadLevel.Child);
return repo.FindCategory(id, loadlevel);
}
}
OR、私が見る他のオプションは、コントローラ(MVC違反?)でloadlevelを定義し、私のサービスクラスでただ一つの方法を実装することです:オプションが良いだろう
public class CategoryService
{
public Category LoadCategory(int id, int loadlevel)
{
return repo.FindCategory(id, loadlevel);
}
}
を?私はDRY違反が多くの冗長コードを書くことを意味するので、それはずっと悪いと思う。
遅延ロードを実行するタイミングと実行しないタイミングは、(N)Hiberanteが必要です。 – Paco
私は言いたいことがある – Paco