独上高楼网站
  •    你所在位置:首页 VS.netASP.net编程经验〉复杂查询的实体类设计
  • 复杂查询的实体类设计
  • 作者:Dean  文章来源:博客园  发布日期:2008-11-12  浏览次数:71
  • 打印这篇文章
  • 今天看了NPetshop的源代码,发现 在ASP.Net中Repeater 控件可以使用如下的方式绑定数据列: 

     

     < td>< %# DataBinder.Eval(Container.DataItem, "Item.Product.Id") %>td>

     

        其中的数据源为IList<LineItem>,各个类的关系为:

     

    看了之后很郁闷。在winForm中,你会发觉,对于同样一个数据源IList,用DataGridView是不能以类似

    dataGridView1.Columns[0].DataPropertyName = "Item.Product.Id";

    的方式指定显示的。(我用的是VS2005)

         通常,为了在DataGridView中正确显示类似上述的查询,我们往往在Product类中添加LineItem类和Item类的属性,把Product改造为一个“无所不包”的类。又或者是让Item继承LineItem,再让Product类继承Item。姑且不论在逻辑上这样的设计是否合理,但对于像我这样刚接触ORM的初学者来说,无疑在观念上造成很大的困扰:OO不是一直标榜“减少重复”、“提高效率”的吗?怎么在做这样一个普遍的查询时感觉还不如用DataSet快?而且还多了不必要的重复(如上面Product类中额外多添加的属性)。

        上网搜索了大半天,提出类似问题的人不在少数,而满意的解答却不多(多数的回答都是上面的两种)。在此我想以一个ORM初学者的身份向各位大大问几个问题:

    1.实体类中,多表关联的关系该如何去定义和描述?(比如Parent类包含IList属性)

    2.在WinForm中实现上面所说的多表查询有没有更好的解决方案?

    3.对于ORM初学者来说,以什么样的方式才能有效的入门(更快地在实际项目中运用)?

  • 打印这篇文章
  • 与本文主题相关的文章
  • 返回首页