在将HTTP POST请求的数据(正文)存储到数据库之前,我需要对其进行编辑。
我是初学者,正在尝试将数据保存到数据库中,但是在保存之前,我需要使用接收到的请求中一个变量的值来获取数据
其他信息:这可能有所帮助
这是http帖子正文
{
"message": "K E ?",
"senderId": "c24617c6-4680-4a8b-a010-cdf969ddd3f8",
"dateTime": "2018-09-01T20:06:06",
"request": "9cb31157-86b4-4eeb-b770-fc3a86f5f906"
}
这里请求是对象,而这个“ 9cb311 ...... f5f906”是请求ID,我要使用此请求ID来获取请求的对象,以便将数据存储到数据库中
类似这样的东西
[HttpPost]
public async Task<IActionResult> PostConversation([FromBody] Conversation conversation)
{
Request str = conversation.Request;
var request = (from r in _context.Requests
where r == str
select r);
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
_context.Conversation.Add(conversation);
await _context.SaveChangesAsync();
return CreatedAtAction("GetConversation", new { id = conversation.ConversationUniqueId }, conversation);
}
数据库模型
public class Conversation
{
public Request Request { get; set; }
}
public class Request
{
public string RequestId { get; set; }
}
对不起,如果我不清楚
答案 0 :(得分:1)
要通过requestId将Request
保存到Conversation
,不需要这样做,您可以定义导航属性。
public class Conversation
{
public string RequestId { get; set; }
public virtual Request Request { get; set; }
}
public class Request
{
public string Id { get; set; }
}
然后,您可以直接使用RequestId
保存当前请求,而无需从数据库中检索Request
对象。
答案 1 :(得分:0)
您似乎想将多个对话绑定到一个请求并将其保存在数据库中。
像这样编辑模型:
public class Conversation
{
public int ConversationId { get; set; }
public string RequestId { get; set; }
[ForeignKey(nameof(RequestId))]
public Request Request { get; set; }
}
public class Request
{
public string RequestId { get; set; }
[InverseProperty(nameof(Conversation.Request))]
public IEnumerable<Conversation> Conversations{ get; set; }
}
这将使EF了解您想做什么。
并在操作中修改代码,例如:
[HttpPost]
public async Task<IActionResult> PostConversation([FromBody] Conversation conversation)
{
string requestId = conversation.RequestId;
var request = (from r in _context.Requests
where r.RequestId == requestId
select r);
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
// Reject if given requestid can not find a request.
if (request == null)
{
return NotFound();
}
_context.Conversation.Add(conversation);
await _context.SaveChangesAsync();
return CreatedAtAction("GetConversation", new { id = conversation.ConversationUniqueId }, conversation);
}
这会将对话保存到您的数据库中,并将其链接到该请求。