自动程序不会忽略带有错误的属性

本文关键字:有错误 属性 程序 | 更新日期: 2023-09-27 18:03:06

我们有一个复杂的User对象,它包含一堆其他对象的列表。

User
  List<User> Subordinates {get; set;}
  etc....

当我们运行代码时,一些属性出现错误是完全可以接受的,因为与数据库的连接已经关闭,我们没有得到说的从属。

在AutoMapper中,当尝试将User类映射到另一个类时,我得到一个错误。

所以从属属性的错误是;

'((System.Data.Entity.DynamicProxies.User_26F7582000F06E0D5B307573194E69014E40D1C586E95D4E4932757C1F4DE360)((System.Data.Entity.DynamicProxies.WorkflowTask_DEDE69BC0D3CAFD0CCDA62406BC48A7A7CCBD5E8B13369FF5E761B64348A767C)thisTask).User).Subordinates' threw an exception of type 'System.ObjectDisposedException'

而AutoMapper抛出的错误是;

{"Error mapping types.'r'n'r'nMapping types:'r'nWorkflowTask -> jsonTask'r'nDataRepository.WorkflowTask -> Tasks.Models.jsonTask'r'n'r'nType Map configuration:'r'nWorkflowTask -> jsonTask'r'nDataRepository.WorkflowTask -> Tasks.Models.jsonTask'r'n'r'nProperty:'r'nUser"}

然后在InnerException;

{"Error mapping types.'r'n'r'nMapping types:'r'nUser -> jsonUser'r'nDataRepository.User -> Tasks.Models.jsonUser'r'n'r'nType Map configuration:'r'nUser -> jsonUser'r'nDataRepository.User -> Tasks.Models.jsonUser'r'n'r'nProperty:'r'nSubordinates"}

我只需要AutoMapper忽略那些错误的属性

自动程序不会忽略带有错误的属性

根本原因是数据被惰性加载到你的实体中,通常在using(var context = new MyDbContext())块内,AutoMapper试图映射上下文块外的未加载属性,触发加载,因此System.ObjectDisposedException,因为上下文已经被处置。

您需要做的是NOT忽略无法加载的属性,但要确保在映射之前正确加载了所有属性。我建议你阅读这个指南,它展示了如何将控制器、实体和dbcontext放入正确的层中。