我将virtual
关键字用于EF延迟加载的某些属性。我有一种情况,当将源映射到目标时,应从AutoMapper中忽略模型中标记为virtual
的所有属性。
有没有自动的方法可以实现这一目标,还是应该手动忽略每个成员?
最佳答案
您可以创建一个映射扩展名并使用它:
namespace MywebProject.Extensions.Mapping
{
public static class IgnoreVirtualExtensions
{
public static IMappingExpression<TSource, TDestination>
IgnoreAllVirtual<TSource, TDestination>(
this IMappingExpression<TSource, TDestination> expression)
{
var desType = typeof(TDestination);
foreach (var property in desType.GetProperties().Where(p =>
p.GetGetMethod().IsVirtual))
{
expression.ForMember(property.Name, opt => opt.Ignore());
}
return expression;
}
}
}
用法:
Mapper.CreateMap<Source,Destination>().IgnoreAllVirtual();