AutoMapper/AutoMapper — Issue #155: Automapper triggers NHibernate lazy loading on properties not used in destination
Author: noir2501
Created: 2011-12-04 10:00:07+00:00
State: open

I am struggling with this issue:

I have a list of NHibernate objects called "Project". These objects contain a lazy - loaded list of "Branches". I am trying to pass a list of Projects to a WCF service so I am using AutoMapper to transform them to flat objects.

The problem is that even though the destination objects called "ProjectContract" does not contain a list of Branches, Automapper still invokes this collection and a lot of queries are made to the database because NHibernate fires the lazy - loading and loads the Branches collection for each project.

Here are the classes and the mapping:

```C#
public class Project
{
public virtual int ID
{
get;
set;
}

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

public virtual IList 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();
}
}
```

My question is: Is there a way to tell AutoMapper to not touch the "Branches" collection because I don't care about it and that is a proxy that will trigger many database calls?

I temporarily fixed this with MaxDepth(1), but there are other entities where I have collections that I want to transfer, and collections that I don't want to be touched, like this one. In that case, MaxDepth(0) will not work.