私は簡単な更新機能を持っている:Automapper - ソースオブジェクトと宛先オブジェクトの既存のプロパティのみにマップできますか?
public void Update(Users user)
{
tblUserData userData = _context.tblUserDatas.Where(u => u.IDUSER == user.IDUSER).FirstOrDefault();
if (userData != null)
{
Mapper.CreateMap<Users, tblUserData>();
userData = Mapper.Map<Users, tblUserData>(user);
_context.SaveChanges()
}
}
のuserDataは、EFのエンティティであり、そしてそれはエンティティのキープロパティは、私は信じている、ので、うちゼロに取得しています、それはそう、先のオブジェクトではなく、ソースオブジェクトに存在します
したがって、私の質問は、ソースオブジェクトと宛先オブジェクトの両方に存在するプロパティをマップするようにAutomapperを構成できますか?エンティティキーやナビゲーションのプロパティをスキップするようにしたいと思います。このように、必要に応じて
私のエンティティごとに無視するプロパティのリストを明示的に作成する必要があります。私の場合、私にとっては、 "欲張りな"マッピングを無効にし、AutoMapperにソースオブジェクトと宛先オブジェクトのプロパティを比較させ、両方に存在するプロパティに対してのみマップする方法があるでしょう。私はドキュメントでこのようなオプションは見つからなかったので、私はここで尋ねると思ったが、私はAutoMapperがこのように動作するとは思わない。 –
私はあなたが適用したいルールを理解しています:「私のソースプロパティがnullでなく、デスティネーションプロパティがnullでなく、ソースをデスティネーションにマップする」が、このロジックをすべての人にグローバルに適用することはできないと思います私が上で行ったように、明示的にそれぞれの条件を作成することなく、 – CSL
私が適用したいルールは、「ソースプロパティがデスティネーションに存在し、ソースをデスティネーションにマップし、デスティネーション内の他のすべてのプロパティを無視する」というルールですが、無視を作成する必要があるという点で正しいと思いますあなたが指示した通りの条件。 –