想象一下,您有一個與其他實體有某種關係的實體,並且您只想加載其中一些實體以在不同視圖中顯示它們。定義在控制器中加載哪些數據是一種很好的做法嗎?
例如,假設這個實體:
public class Category
{
public int id;
public Category child;
public Category parent;
}
在視圖「ShowChild」你不想因爲你沒有顯示它加載「父」屬性。
因此,考慮到這種情況,我在我的存儲庫中實現了一個非常漂亮的「系統」,以從數據庫加載實體,只填寫我想要的屬性。所以,現在
我有一個類的實例只加載ID和子屬性|
分類類別= repo.FindCategory(LoadLevel.Child)ID,(INT)(LoadLevel.basic):是這樣工作的。我在這裏面臨的困境是,如果我在我的serviceLayer中定義LoadLevel(它應該是),我將不得不在我的服務類中編寫兩個方法,「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 2009-05-17 19:11:51