如果我要在主页现实一个Log列表,我的数据层可能会有这样的函数
public IList<Log> GetLogsByUserId(Guid uid)
{
...
// 我用NHibernate
User u = session.Get<User>(uid);
return u.LogList;
}
然后我可能只是在主页现实Log的标题(带链接、创建时间等等),要是使用上面的函数,那么从数据库检索回的Log,还包含Log的内容(这个数据量可能很大)。这样不是很浪费?我也可以写个Struct LogInfo,就存储LogTitle, LogId,CreatTime,Author。 写个SQL获取这几个字段。 但是有很多情景中,我可能还需要知道发布时间,是否对外公开,是否允许评论..., 那我不是要LogInfoA LogInfoB .... 这样以适应各种情形?给个好的方法吧-_-
public IList<Log> GetLogsByUserId(Guid uid)
{
...
// 我用NHibernate
User u = session.Get<User>(uid);
return u.LogList;
}
然后我可能只是在主页现实Log的标题(带链接、创建时间等等),要是使用上面的函数,那么从数据库检索回的Log,还包含Log的内容(这个数据量可能很大)。这样不是很浪费?我也可以写个Struct LogInfo,就存储LogTitle, LogId,CreatTime,Author。 写个SQL获取这几个字段。 但是有很多情景中,我可能还需要知道发布时间,是否对外公开,是否允许评论..., 那我不是要LogInfoA LogInfoB .... 这样以适应各种情形?给个好的方法吧-_-
你可以另外写一个函数
就只返回那几个想要的
其余的,都用默认值
----------------------------------
比如blog程序:
有时文章列表只需要 标题 发布时间 作者
有时文章列表需要 标题 发布时间 作者 文章概要
有时文章列表需要 标题 发布时间 作者 点击数 评论数
有时文章列表需要 标题 创建时间 作者 //草稿列表
更多的情况
----------------------------------------------------------------
不错的方法。今天在书城翻了翻书,一般它们用DataTable...我希望知道还有没有更好的方法
也许这样有点浪费内存,但至少他的可维护性比较强。我在看PetShop的时候,他是把全部的产品都取出来,然后保存在缓存里,以后从缓存里直接读数据,包括分页。