aspnet から aspnetcore に変換して API の再構築に取り組んでいます。OData と標準 API の混合は Swagger と互換性がなかったため、いくつかのルートを OData に移動することを余儀なくされました。
とにかく、そのようなメソッドの1つ(残りの最後のメソッド)には次の署名があります
[HttpPost]
public IActionResult PostChanges([FromBody] ICollection<BulkEditDTO> changeSet)
{
if (!ModelState.IsValid)
{
var error = ModelState.Values.Select(x => x.Errors).FirstOrDefault();
return BadRequest(ModelState);
}
//TODO:Get data?
}
物体
public class BulkEditDTO
{
[Key]
[DataMember]
public int Id { get; set; }
[DataMember]
public SomeDTO Changes { get; set; }
}
関数、複合型、アクション、考えられる ODataActionParamaers のすべての組み合わせを試したような気がしますが、これを解決できないようです。プロパティとしてienumerableを持つ単純なDTOを試してみましたが、「キーが必要」という問題に遭遇しました。
私が試した多くの研究は、私をこの道に導きます:
https://github.com/OData/WebApi/issues/1873
ヘッダーを探していて、ボディを使用しようとしているため、それはまったく同じではありません。
これに対する実際の回避策はありますか?