.NET Framework APIを使用して、Entity Framework Coreを使用してデータベース内のエンティティを更新することになっています。Entity FrameworkおよびJSON(C#)を使用して特定のプロパティを動的に更新する
ユーザが既存のエントリを編集すると、編集フォームは編集されたデータのみを返します。完全なエンティティは返しません。
のは、私たちが店を持っているとしましょう:
public class Shop {
public int ShopID { get;set;}
public string Name { get;set;}
public string Address { get;set;}
}
は今、ユーザーがアドレスを編集して保存します。 APIに送り返されるデータはShopIDとAddressになります。ただし、以下の結合モデルを使用すると、それが実際に渡されていないので、論理的であるNULLに名前を設定します。
[Route("~/shop/[action]")]
public IActionResult Update([FromBody] Shop shop)
{
_context.Shops.Update(shop);
_context.SaveChanges();
return new JsonResult(new { result = true });
}
だから、私はプロパティ/ IEが更新される可能性があるかわからないので、(実際にはもっと多くのプロパティがあります)、POSTリクエストで送信されたフィールドだけを動的に更新する方法が必要です。
ありがとうございます。
だから、近いが、まだ行くにはいくつかの方法。 AutoMapperは素晴らしいと私は見ましたが、答えは '.ForAllMembers(opt => opt.Condition(srs =>!srs.IsSourceValueNull));'として最新バージョンで古くなっているようですが、実際にはIsSourceValueNullを含んでいません。 'IValueResolver'を実装することについてのもう一つの言及は有効ではないようです。そのインタフェースは3つのタイプ' public interface IValueResolver 'を必要とするからです。それとも、私は完全に愚かですか? –
Max
ご覧のとおり、https://github.com/AutoMapper/AutoMapper/issues/1406 '.ForAllMembers(x => x.Condition(y => y!= null))' –
ありがとうございます参考までに、EF Coreには実際には.Update()というメソッドがあります。オンラインドキュメントには書かれていませんが、間違いなく動作し、VS intellisenseにあります。 – Max