我正在从事一个n层域驱动设计项目,该项目使用实体框架4 DB-First和Automapper在域的命名空间中生成POCO。
为了澄清: EF项目返回MyProject.Repositories.EF.Entities命名空间中的实体,我使用Automapper将它们转换为MyProject.Domain.Entities命名空间中的实体。
现在,我不太清楚当我在EF和域实体之间映射时,是否枚举了所有集合属性,即映射时是否还从DB检索了所有相关数据,或者当我在代码中实际枚举它们时,它们是否仍然是延迟加载的。
我对明显的业绩影响感到关切。
发布于 2014-05-01 09:24:32
原来答案是否定的。只要在两个IEnumerables之间映射,实际的枚举只会在执行foreach、ToList()等操作时发生。如果不对这些对象的IEnumerable属性执行操作,则枚举永远不会发生,相关数据也不会被检索。
发布于 2013-09-20 22:06:20
长话短说-这不是AutoMapper关注的问题,而是您如何使用ORM的问题。AutoMapper只是删除了您已经编写的代码,所以如果您编写了针对ORM的糟糕的执行代码,那么AutoMapper将欣然接受。
在使用AutoMapper之前,在使用AutoMapper之前,在使用AutoMapper之后,人们都在滥用ORM。当正确使用时,延迟加载是一个强大的工具,但仍然可能被滥用。使用延迟加载并不妨碍开发人员理解幕后实际发生的事情。
所以使用AutoMapper,但是要注意您的抓取,就像您没有使用AutoMapper时应该做的那样。
https://stackoverflow.com/questions/18912989
复制相似问题