小弟看了Petshop4.0 中IDAL的IItem,就拿IList<ItemInfo>GetItemsByProduct(string productId)来说吧,实现了这个接口,就应该是得到了ItemInfo实体的一个集合吧?
现在的问题就是 如果我是多表查询出来的一个结果集,那么IList<ItemInfo>中的ItemInfo应该放什么呢?难道还要自己在写一个实体吗
看到其他的工厂模式三层中,有的都没有用到IList.而是直接用的DataSet,用哪一个有没有什么说法吗?呵呵 可能我问的问题有些白痴了,小弟愚钝,全靠自己看,~有些东西实在想不出来 呵呵 还请各位牛人解答一下 不胜感激

解决方案 »

  1.   

    如果你做的东西是基于实体的,那么你需要编写一个实体类,在DAL层把结果集转换成这个实体类实例的集合如果你做的东西是基于DataSet/DataTable的,那么不用IList也罢。一般来说,如果你的项目不大,纯粹是数据驱动,业务逻辑不是很多,又注重开发效率的话,可以使用DataSet/DataTable。用这个方法的问题往往在于业务逻辑趋于散落于各处,不好维护,而且相对来说overhead比较大,另外如果使用弱类型的DataSet/DataTable的话,得不到对字段的编译时检查等等
      

  2.   

    支持思归!我补充一下:实体类,并不是万能的.如果多表查询,你就让多个实体类,互相引用,如: 
    ClassA{...} ClassB 

    CalssA   classA; 
    .... 
    } 当然不可能一种查询建一个对应的实体类. 你可以把你的实体建得大一些,它引用了哪些其它实体,都加进去,每次可返回不同属性的值. 
    这样看上去,好像很浪费内存,其实也就是浪费了一点指针内存,真正所占用的内存要比DataSet少,就是工作量大些
      

  3.   

    哇 思归来解答我的问题了 很荣幸!
    我做的这个项目就是一个地方的点子商务网站,刚开始肯定不会多大,但是以后也不好说
    以前做的呢 也都是一些小的东西 所以现在拿捏的不好 
    现在的意思呢 就是想仿效一下petshop做一下  但是碰到了这个问题 就不好往下走了 呵呵  还是想知道一些具体的解决方法
    实在不好意思~人比较笨
    2楼的朋友说的也是一个办法喔  不知道可行不可行 嘿嘿 后面的朋友还有没有一些建议呢?
      

  4.   

    我做的就是仿效petshop的 写了model类了  但是往下走不就看到了Ilist了吗 但是petshop里面的都是没有多表查询,也就是类都是基于一个表的 这样直接查出来的结果 用到那个表的具体实体就可以了 现在就是想了解一下 多表查询的结果 怎么存放呢
    在线等待喔 
      

  5.   

     如果我是多表查询出来的一个结果集,那么IList <ItemInfo> 
     
         2中解决方法,一种是在ItemInfo实体内添加其他多表查询的字段!
     
            第2中就是利用dateTable来实现!
     
                datetable 不需要实体!