假設我需要爲StackOverflow實現域模型。如何在你的域類中實現「最後20個東西」屬性?
如果我在做ORM,我如何定義(和映射)屬性來獲取「最後的評論」和其他「最後」的東西? 它在我看來應該反映在域模型中。
有時候我可能需要「所有的意見」雖然...
假設我需要爲StackOverflow實現域模型。如何在你的域類中實現「最後20個東西」屬性?
如果我在做ORM,我如何定義(和映射)屬性來獲取「最後的評論」和其他「最後」的東西? 它在我看來應該反映在域模型中。
有時候我可能需要「所有的意見」雖然...
我可能會通過我的ORM工具的影響,但我認爲這是一個查詢,而不是一個域屬性。該域包含關聯,並且存儲庫封裝了您正在描述的查詢等查詢。
您會查詢您的存儲庫中特定用戶的最新評論。像
IList<Comment> recentComments = repository.GetRecentComments(user,20);
你可以在模型中做到這一點,但取決於你期望有多少評論,我會避免它。模型不應該知道如何填充本身,這是存儲庫的工作;然而,如果你使用的是類似NHibernate的東西,它會在那裏。
public class User{
public IList<Comment> Comments { get;set;}
public IList<Comment> GetRecentComments()
{
// Logic
}
}
在這種實現你總是要加載所有的意見,以獲得最後的20不是一個大問題,如果只有50的意見,但如果有5000個意見你已經有了相當多的的開銷。
所以你會有一個屬性「評論」,並根據你調用哪個服務層方法(GetAllComments或GetLastComments)你會得到不同的數據集裏面? – badbadboy 2008-11-20 19:24:39