Automapper和NHibernate延迟加载

我正在努力解决这个问题:

我有一个名为“Project”的NHibernate对象列表.这些对象包含一个延迟加载的“分支”列表.我试图将项目列表传递给WCF服务,所以我使用AutoMapper将它们转换为扁平对象.

问题是,即使名为“ProjectContract”的目标对象不包含分支列表,Automapper仍会调用此集合,并且对数据库进行了大量查询,因为NHibernate触发了延迟加载并为每个加载了Branches集合.项目.

这是类和映射:

    public class Project
    {
     public virtual int ID
     {
        get;
        set;
     }

     public virtual string Name { get; set; }
     public virtual string Description { get; set; }

     public virtual IList<Branch> Branches { get; set; }
    }

  [DataContract]
  public class ProjectContract
  {
    [DataMember]
    public virtual int ID
    {
        get;
        set;
    }

    [DataMember]
    public virtual string Name { get; set; }

    [DataMember]
    public virtual string Description { get; set; }
  }

  public class ProjectMappings : Profile
  {
    protected override void Configure()
    {
        Mapper.CreateMap<Project, ProjectContract>();
    }
  }

我的问题是:有没有办法告诉AutoMapper不要触及“Branches”集合,因为我不关心它,这是一个会触发许多数据库调用的代理?

我暂时用MaxDepth(0)修复了这个问题,但是还有其他实体,我有我想要传输的集合,以及我不想触及的集合,比如这个.在这种情况下,MaxDepth(0)将不起作用.

谢谢,
科斯明

最佳答案 是的,AutoMapper忽略功能.

Mapper.CreateMap<Source, Destination>()
    .ForMember(dest => dest.SomeValuefff, opt => opt.Ignore());
点赞