我应该将实体框架的 SaveChanges() 方法放在单独的方法中还是与其他方法一起使用?

Yan*_*nal -1 c# entity-framework-core asp.net-core

我有一个带有 .NET 5 的 ASP.Net Core Web API,我想使用一个实体框架 dbset。为了向 dbset 添加记录,我使用以下代码:

[HttpPost]
public IActionResult Add(TblPerson person)
{
    try
    {
        _context.TblPeople.Add(person);
        _context.SaveChanges();
        return Ok(true);
    }
    catch
    {
        return BadRequest();
    }
}
Run Code Online (Sandbox Code Playgroud)

注意有一个_context.SaveChanges();. 如果我想将该行从方法中取出并将其分开,它将是这样的:

[HttpPost]
public IActionResult Add(TblPerson person)
{
    try
    {
        _context.TblPeople.Add(person);
        return Ok(true);
    }
    catch
    {
        return BadRequest();
    }
}

[HttpGet]
[Route("Save")]
public IActionResult Save()
{
    return Ok(_context.SaveChanges());
}
Run Code Online (Sandbox Code Playgroud)

现在我想看看如果从客户端背对背调用 10 次,从客户端的角度来看哪种方式会更快。

Cod*_*ter 7

你试过吗?第二种方法不会保存您的实体,因为您的 DbContext 是根据请求实例化的,或者至少应该如此,因此当您的客户端调用 Save() 时,之前添加的实体将消失。

如果出于性能考虑需要批量插入,请提供一种接受数组的方法。