我不知道它是否是一種更好的(或者甚至是適用的)方法,但我有時會製作我用於從其他對象引用的對象的簡短版本。 breif版本充當對象完整版本的基類,並且通常包含在這些對象的列表中可見的信息。它通常不包含其他對象的列表,任何對其他類的引用通常都會引用該類的簡要版本。這消除了一些不必要的數據加載,以及一些循環引用的情況。例如:
public class DepartmentBrief
{
public string Name { get; set; }
}
public class Department : DepartmentBrief
{
public Department()
{
Departments = new List<DepartmentBrief>();
}
public IEnumerable<DepartmentBrief> Departments { get; private set; }
}
public class UserBase
{
public DepartmentBrief Department { get; set; }
}
這種方法和具有完全對象引用與延遲加載配對的一個區別是您需要在需要時顯式加載額外的數據。如果您有一個UserBase
實例,並且您需要該UserBase
的Department
中的部門列表,則需要編寫一些代碼來獲取對象 UserBase
中的對象正在識別的對象。這可能被認爲是一個缺點,但我個人喜歡這樣一個事實,即在準確地查看代碼到達數據存儲區時,它會很清楚。
如果您通過其基類(DepartmentBrief)訪問Department的實例,它仍然是內存中的Department。所以在你需要訪問這個列表的時候,你必須先施放(這沒有任何意義)。使用接口(或基類)是可以的,但是如果部門列表是每個部門都有的,那麼它應該包含在該接口中。我不明白如何鑄造可以在性能上有所作爲。 – Groo 2009-06-26 08:31:10