我们有一个典型的多层/层结构。应用程序+ WCF服务+存储库/ EF4 /数据库。跨层/层处理对象图的最佳方法是什么?
我们正在使用定制版本的EF POCO T4模板来生成我们的实体,我们使用跨层/层。由于涉及额外的时间/工作,我们决定不使用DTO。
一个示例对象可能是一个森林,它可能具有可能具有树叶导航属性的树的导航属性。
什么是最好的方法来添加叶子和处理对象图?数据是从客户端导入的,所以我们不一定知道数据库中是否存在父林/树。
查询服务,并获取任何现有的相关对象。为相关对象附上图形或创建新对象并在客户端附上图形。 例如:公共森林GetForest(字符串forestid) 然后---公共无效AddLeaf(叶叶)
创建森林,树,和叶在客户端对象和附加图表。发送叶对象然后在服务器端执行逻辑以将对象与数据库中的现有对象进行比较。根据需要剥离图形,添加不存在的项目和/或附加到现有对象。 示例:public void AddLeaf(叶子叶)
在客户端创建林,树和叶对象,但不附加图形。将对象发送到服务端,然后执行逻辑以将对象与数据库中的现有对象进行比较。添加不存在的项目和/或附加到现有对象。 例如:公共无效AddLeaf(叶叶子,树树,森林林)
问题归结为逻辑应该在哪里发生附上这些相关对象的图形。 在一个侧面说明中,当处理被序列化和反序列化的图时,我有点担心导航属性的“修正”逻辑。看起来这可能会成为一个昂贵的运营。
注意:客户端应用程序是一个正在导入数据的Windows服务...因此它不一定是轻量级客户端。 (我们不一定害怕增加逻辑。)
使用DTO的:通过层间的对象图有时似乎是个好主意,但它会导致头痛! – 2011-01-08 06:18:08
我认为我们对我们的架构下一个改造,我们将结合的DTO,而是寻找一种方式,在一定程度上自动执行像automapper。 – 2011-01-09 01:19:45