Jak*_*sky 6 entity-framework lazy-loading automapper
我一直在使用AutoMapper,它似乎得到了我所有的子实体(即使我没有在"Include()"子句中指定它们).是否有任何方法可以使延迟加载成为可能,并且只有在我指定它们时才获取子属性.
谢谢,
的Jakub
映射之后,您将拥有映射对象,而不对源实体(其中包含延迟加载的数据库上下文)的任何引用.仅将属性值复制到目标实体.因此,如果没有源实体,您将无法进行任何延迟加载.
实际上,延迟加载对你来说很合适 - 而且它在映射过程中发生.您为实体的延迟加载属性指定了映射,mapper尝试获取这些值.这导致延迟加载您为映射配置的所有导航属性.这是非常低效的.要在映射期间禁用延迟加载,您可以忽略映射配置中的导航属性.例如,如果您的客户使用延迟加载的订单:
Mapper.CreateMap<Customer, CustomerDto>()
.ForMember(s => s.Orders, m => m.Ignore());
Run Code Online (Sandbox Code Playgroud)
或者Orders
从目标实体中删除属性CustomerDto
.如果你需要在CustomerDto
里面有订单的实例,那么最好的选择是急切加载订单,以避免其他查询.
归档时间: |
|
查看次数: |
6812 次 |
最近记录: |