需要自动映射器将域类型的属性从上下文映射回现有实体(基本上只是更新已更改的字段)。我需要它来忽略导航属性,只映射标量属性。
如果我说 ForMember(o => o.MyNavProperty, opt => opt.Ignore) 我可以让它工作,但我宁愿为我的所有映射提供一个通用方法来告诉它只映射标量而不是导航属性.
试图遵循毛里西奥的解决方案:
ASP.net MVC - 我应该使用从 ViewModel 到实体框架实体的 AutoMapper 吗?
但我无法让它成功忽略我的导航属性。
这是我的更新版本:
private static void CreateMapForEF<TDto, TEntity>()
{
Mapper.CreateMap<TDto, TEntity>()
.ForAllMembers(o => o.Condition(ctx =>
{
var members = ctx.Parent.SourceType.GetMember(ctx.MemberName); // get the MemberInfo that we are mapping
if (!members.Any())
return false;
if (members.First().GetCustomAttributes(
typeof (EdmRelationshipNavigationPropertyAttribute), false).Any())
return false;
return members.First().GetCustomAttributes(typeof(EdmScalarPropertyAttribute), false).Any(); // determine if the Member has the EdmScalar attribute set
}));
}