コンテキストからドメイン タイプのプロパティを既存のエンティティにマップするオートマッパーが必要です (基本的には、変更されたフィールドを更新するだけです)。Navigation プロパティを無視し、スカラー プロパティのみをマップする必要があります。
ForMember(o => o.MyNavProperty, opt => opt.Ignore) と言えば動作させることができますが、すべてのマッピングに対して一般的な方法を使用して、nav プロパティではなくスカラーのみをマップするように指示したいと思います。 .
マウリシオのソリューションに従おうとしています:
ASP.net MVC - ViewModel から Entity Framework エンティティに 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
}));
}