当使用Automapper映射实体时,可能会出现Automapper加载了被忽略的懒加载NHibernate属性的问题。要解决这个问题,可以使用以下代码示例中的“IgnoreAllNonExisting”方法,并在配置中排除懒加载的属性。
public class MyProfile : Profile
{
protected override void Configure()
{
CreateMap()
.ForMember(dest => dest.SomeProperty, opt => opt.Ignore())
.IgnoreAllNonExisting();
}
}
public static class AutoMapperExtensions
{
public static IMappingExpression IgnoreAllNonExisting(this IMappingExpression expression)
{
var sourceType = typeof(TSource);
var destinationType = typeof(TDestination);
var existingMaps = Mapper.GetAllTypeMaps().First(x => x.SourceType.Equals(sourceType)
&& x.DestinationType.Equals(destinationType));
foreach (var property in existingMaps.GetUnmappedPropertyNames())
{
expression.ForMember(property, opt => opt.Ignore());
}
return expression;
}
}