在用C#编程之后,开始感觉面向对像编程的好处,结果发现面和向对像编程也不是没有缺点的,个人感觉一个最大的缺点是效率太低。
我现在在开发一人力资源管理的软件,这个样的软件最大的特点就是字段特别多.我的几个类:部门类,员工类,人事变动类,职位类等等,当用户执行这样一个操作时,效率太低的缺点就暴露无疑了:
当用户点到一个部门时,加载该部门下所有子部门里的所有员工对象。加载员工信息会执行很多加载操作,比如人事资料啊,人事变动对象,职位对象等等,导致这个加载过程非常长。
以前用过程的方法编写的时候,只用一个查询语句来显示,但是现在却要生成对像。
当大家遇到这样的问题的时候,你们是怎么解决的呢??
欢迎讨论,指点迷津,顶者有分

解决方案 »

  1.   

    你的方法很类似于O/R Mapping的思想,我用过NHibernate这些专门的O/R Mapping框架,并没觉得有你说的那么夸张的慢。
      

  2.   

    是你的O/R Mapping没有到位,在这个框架里面你说的那种情况依然是用多表查询的方式获取的数据,然后再封装为对象的,而不是一个对象就去查一次。你那样做处于O/R Mapping思想的初级阶段。
      

  3.   

    是很慢的,450个对象生成完大概要5分钟时间,有想没有愿意在电脑前等5分钟吧,多线程后台加载也是有问题的,可能我的做法不对,现在我的做法是为每个类写一个static 的CreateInstance(string iRID)方法, 比如部门类,传一个部门id(即iRID),就生成部门对像。在别的类中,只要用到部门的,全用这个方法生成对象,其它类也一样。所以这样就慢了,不知道怎么简单化
      

  4.   

    晕死……5分钟……哪里有那么慢的夸张。建议年要用O/R Mapping就考虑使用框架,否则就回到DataSet上来用强类型的DataSet
      

  5.   

    你去下个开源项目:NHibernate来学习学习,至于要用它还是继续自己的框架就随便你了。www.sf.net上下载
      

  6.   

    在编辑时使用实体类
    在浏览时直接用sql从数据库读
      

  7.   

    为每个类写一个static 的CreateInstance(string iRID)方法
    而且我很奇怪为什么这种方式提供对象?为什么不用new?你这个方法里面又是怎么实现的呢?不懂
      

  8.   

    ffjing(卡卡) 的方法是我现在唯一想到能使用的方法,但是我不太想用,我希望有一种更好的办法,可以加载全部对像但是不会导致非常慢.
      

  9.   

    要加入Cache机制
    另外在完全面向对象和追求性能间要做出折中的选择
      

  10.   

    to  haiwangstar(南河三(信为万事之本))
    愿听高见
      

  11.   

    为每个类写一个static 的CreateInstance(string iRID)方法
    而且我很奇怪为什么这种方式提供对象?为什么不用new?你这个方法里面又是怎么实现的呢?不懂-----------------------------
    因为new 出来的东西是空的,我现在需要得到的是有信息的对像,所以用createinstance方法,传一个id进去,得到这个id的对像的所有信息,