如何使用ASP.NET Web API实体框架处理JSON具有“父子”关系的数据的POST调用?

问题描述 投票:0回答:1

我有一个JSON,其格式如下:

{
"header": {
"source_code": "S12345"
"user_id": "987456"
},
"body":{
"source_code": "S12345",
"wrapper_list": [
{
"item_wrapper_code": "WRAP01",
"item_amount": 10,
"item_type_amount": 2,
"creation_date": 20191115,
"worker": "W001",
"workstation_no": "1"
"item_list":[
{
"item_code": "I001"
"item_id": "",
"bar_code": "123987456"
"remark": ""
},
{
"item_code": "I002"
"item_id": "",
"bar_code": "213987456"
"remark": ""
}
]
}
]
}
}

上面的JSON对象的主体包含父子关系中的数据。

Parent: WRAP01
Child1: Item I001
Child2: Item I002

我必须能够解析此JSON对象,并将这些详细信息作为行插入到相应的表中,即,将与父相关的东西插入父表,并将与子相关的东西插入子表。

我请专业人士在此指导我。

sql-server entity-framework post asp.net-web-api2
1个回答
0
投票

因此,将Json解析为实体框架对象是不好的做法。

首先,创建将映射到Json的数据传输对象(DTO)。它就像是:RequestDto,BodyDto,WrapperDto,WrapperItemDto。

要进行解析,您可以使用类似newtonsoft的工具,请参见示例:https://www.newtonsoft.com/json/help/html/DeserializeObject.htm

然后,您应编写将映射到数据库表的EntityFramework对象。希望您了解数据库理论,并且已经阅读有关EntityFramework及其如何实现不同数据库关系的一些文章。如果没有,请阅读。

您需要一对多关系。一对多关系可以通过以下方式配置。

  1. 按照惯例
  2. 通过使用Fluent API配置

您可以使用第一种方法。它更容易。因此,您需要2个类:WrapperEntity,WrapperItemEntity。

然后,您应该编写将WrapperDto转换为WrapperEntity并将WrapperItemDto转换为WrapperItemEntity的代码。然后将* Entity对象保存在数据库中。

这是实现这种逻辑的最佳实践。我将其解释为最高级别。有关详细信息,您可以分别搜索每个问题。

© www.soinside.com 2019 - 2024. All rights reserved.