Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何使.NETMVC中的多层体系结构更加干燥(实体框架)_Asp.net Mvc_Asp.net Mvc 3_Entity Framework_N Tier Architecture - Fatal编程技术网

Asp.net mvc 如何使.NETMVC中的多层体系结构更加干燥(实体框架)

Asp.net mvc 如何使.NETMVC中的多层体系结构更加干燥(实体框架),asp.net-mvc,asp.net-mvc-3,entity-framework,n-tier-architecture,Asp.net Mvc,Asp.net Mvc 3,Entity Framework,N Tier Architecture,我目前正在构建一个大型web项目,尝试做所有正确的事情,将事情分为外观、服务、DAO(存储库)、助手等 还将DI与Ninject一起使用 现在,也许这仅仅是因为它接近项目的开始,但是仅仅在db中设置简单的调用就感觉需要花费很长时间 每次我想做一个新的调用,或者做一些事情,都需要在每个服务层中至少编写4个方法,并将所有的东西都进行备份等等。。每次更改db层中的某些内容时,都必须通过域对象手动复制更改,并更新手动将DAO对象转换为域对象的方法(使用分部类在DaoObject的构造函数中接受Domai

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

还将DI与Ninject一起使用

现在,也许这仅仅是因为它接近项目的开始,但是仅仅在db中设置简单的调用就感觉需要花费很长时间

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

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

我们使用的是实体框架,DBfirst。我们可以做些什么聪明的事情来让这个过程变得更加干涸,或者我们只需要等到我们的应用程序的基本基础建立起来,然后事情就会变得更容易,因为大部分管道已经铺设好了等等。特别是当你想通过组合现有的服务来提供新的服务时,这将是一件好事

部分地,在业务逻辑层中手动重新创建DAO对象感觉有些臃肿,但我可以理解,考虑它的实际方式是DAO层实际上正在映射到业务层,与使用上下文设计器相比,它感觉很慢。IE业务层决定它需要什么样的数据,而不关心数据的实际来源


任何帮助都将不胜感激。

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


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

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


获取一些想法。

这个解决方案与autoMapper相比如何?autoMapper使事情变得干涸(呃),T4模板是打字的捷径。生成的代码通常一点也不枯燥。但干代码本身并不是一个目标。目标是提高可维护性。T4和AM都可以实现这一目标。