【问题标题】:How to make a multi tier architecture in .Net MVC more Dry (entity framework)如何使 .Net MVC 中的多层架构更干(实体框架)
【发布时间】:2012-05-10 08:39:42
【问题描述】:

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

也将 DI 与 Ninject 一起使用

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

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

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

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

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

任何帮助将不胜感激。

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 entity-framework n-tier-architecture


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      查看 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

      得到一些想法。

      【讨论】:

      • 此解决方案与 autoMapper 相比如何?
      • Automapper 使事情变得 DRY(er),T4 模板是打字的捷径。生成的代码通常根本不是 DRY。但 DRY 代码本身并不是目标。目标是提高可维护性。 T4 和 AM 都可以实现这一目标。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      • 1970-01-01
      • 2013-09-26
      • 2011-08-24
      • 1970-01-01
      • 2012-10-18
      • 2011-02-20
      相关资源
      最近更新 更多