2

我目前正在构建一个大型 Web 项目,尝试做所有正确的事情,将事物拆分为外观、服务、DAO(存储库)、助手等

也将 DI 与 Ninject 一起使用

现在,也许这只是因为它接近项目的开始,但感觉就像在数据库中设置简单的调用需要很长时间?

每次我想进行新的调用或做某事时,至少需要通过每个服务层编写 4 个方法,将事情一路备份等等。每次在 db 层中更改某些内容时,都必须通过域对象手动复制更改,以及更新手动将 DAO 对象转换为域对象的方法(使用分部类在 DaoObject 的构造函数中接受 DomainObjects,并在每个 DaoObject 上使用 ToDomainObject 方法)

在每个读取 DAO 方法的末尾循环遍历每个 DaoObject 将其转换为域对象,感觉很乱。

我们正在使用实体框架 DBfirst。有什么聪明的方法可以让这个过程更加干燥,还是我们只需要等到我们的应用程序的基本基础构建完成,然后事情就会开始变得更容易,因为大部分管道已经铺设等等。尤其是当您想通过组合现有服务来制作新服务时,它会很好。

尤其是在业务逻辑层手动重新创建 DAO 对象感觉很臃肿,但是我可以理解,实际的思考方式是 DAO 层实际上是映射到业务层,与使用上下文设计器。IE 业务层决定了它需要什么数据,而不关心它实际来自哪里。

任何帮助将不胜感激。

4

2 回答 2

1

肯定会加快您添加新功能所需时间的一件事是使用AutoMapper自动将您的 DAO 转换为域对象。没有更多无聊的手动属性映射!

将所有层很好地分开确实会带来一些额外的管道,但是您可以将每个逻辑组件完全分开,易于测试,易于更换。作为一个大型项目,我认为从长远来看,开销肯定会支付。

于 2012-05-10T09:10:32.470 回答
0

查看 T4 模板生成功能。它可用于根据对 DAO 的更改生成\重新生成实体。

看看http://www.blogfor.net/2009/09/03/generating-business-layer-code-t4-against-a-linq-to-sql-dal/

http://imaginarydevelopment.blogspot.in/2010/01/t4-generates-my-business-objects-for-me.html

得到一些想法。

于 2012-05-10T11:46:24.863 回答