今天看到David Hayden写的Castle ActiveRecord - Active Record Pattern Built on NHibernate - Rapid Application Development文章,其中他的实体类设计如下:

设计是否可以更合理一点?——关于ORM中业务实体的讨论[ActiveRecord("Posts")]
设计是否可以更合理一点?——关于ORM中业务实体的讨论
设计是否可以更合理一点?——关于ORM中业务实体的讨论
public class Article : ActiveRecordBase<Post>
}

注意到出现了下面这样的两个属性:

设计是否可以更合理一点?——关于ORM中业务实体的讨论public int BlogId
设计是否可以更合理一点?——关于ORM中业务实体的讨论
设计是否可以更合理一点?——关于ORM中业务实体的讨论
public int CategoryId

在这个业务实体中,对于Article对象来说,更直观的应该说它属于哪一个Blog,哪一个Category,而不是指定一个整型的值,这种用ID的设计其实是把把数据库结构带入到了业务实体中。我们知道引入ORM,使得我们可以用面向对象的思维来考虑实体间的关系,如果继续使用ID来解决,引入ORM的作用可能就大打折扣了,因此,是否把实体类修改为如下这样更合理一些呢?

设计是否可以更合理一点?——关于ORM中业务实体的讨论[ActiveRecord("Posts")]
设计是否可以更合理一点?——关于ORM中业务实体的讨论
设计是否可以更合理一点?——关于ORM中业务实体的讨论
public class Article : ActiveRecordBase<Post>
}

即用这里的两个属性来代替整型的ID

设计是否可以更合理一点?——关于ORM中业务实体的讨论public Category Category
设计是否可以更合理一点?——关于ORM中业务实体的讨论
设计是否可以更合理一点?——关于ORM中业务实体的讨论
public Blog Blog

估计也有很多朋友会这样去用,下午跟一个朋友讨论时,他说修改前加载Article对象时,加载的仅仅是2个ID,而修改后却要加载Blog,Category对象所有的属性,是否存在性能上的下降?欢迎大家就这个问题说出你的看法。

(出处:http://terrylee.cnblogs.com

相关文章:

  • 2021-11-27
  • 2021-10-11
  • 2021-10-17
  • 2022-12-23
  • 2021-11-22
  • 2022-12-23
  • 2021-12-22
猜你喜欢
  • 2022-12-23
  • 2021-11-28
  • 2021-12-15
  • 2021-11-10
  • 2021-08-20
  • 2021-11-28
  • 2022-12-23
相关资源
相似解决方案