如果我要在主页现实一个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 .... 这样以适应各种情形?给个好的方法吧-_-

解决方案 »

  1.   

    这编文章里有: http://10f0tdgko6ed8o8ta6s5.248886.com
      

  2.   

    你需要多少就取多少
    你可以另外写一个函数
    就只返回那几个想要的
    其余的,都用默认值
    ----------------------------------
    比如blog程序:
    有时文章列表只需要 标题 发布时间 作者
    有时文章列表需要   标题 发布时间 作者  文章概要
    有时文章列表需要   标题 发布时间 作者  点击数     评论数
    有时文章列表需要   标题 创建时间 作者   //草稿列表
    更多的情况
      

  3.   

    用一个数据结构,用不同的数据层函数,不需要的字段为空就可以了
    ----------------------------------------------------------------
    不错的方法。今天在书城翻了翻书,一般它们用DataTable...我希望知道还有没有更好的方法
      

  4.   

    明白楼主的意思了,呵呵我也遇到过类似的问题,我一般是全部取出来实例化为实体类的,然后保存在缓存里。我也想过添加一些实体类只保存想要的那部分数据,但发现这样不是很舒服。
    也许这样有点浪费内存,但至少他的可维护性比较强。我在看PetShop的时候,他是把全部的产品都取出来,然后保存在缓存里,以后从缓存里直接读数据,包括分页。