返回 EFcore 中新增的记录

Kil*_*ine 7 c# entity-framework .net-core

我正在使用 EFCore 制作原型,并努力寻找一种好方法来返回我刚刚添加到实体集合中的对象。

例如:

public Songleader AddSongleader(int congregationId, Songleader songleader)
{
    var congregation = _dbContext.Congregations.Include(c => c.Songleaders).FirstOrDefault(c => c.Id == congregationId);
    congregation.Songleaders.Add(songleader);                        
    _dbContext.SaveChanges();

    //TODO: return the recently-added record...
    return null;
}
Run Code Online (Sandbox Code Playgroud)

ACongregation有一个集合Songleaders。但是,一旦保存上下文,我就不确定返回新实例的好方法。Songleader的Id是在插入数据库时​​生成的,因此我不能只返回传递给方法的对象......

是否有一个好的策略或者 EF 中的某些内容可以在这种情况下提供帮助?

Ahm*_*mar 4

您可以将返回值返回Songleaders给调用者,也可以仅返回方法返回的整数值SaveChanges()。这一切都取决于您的要求。

从控制器中,您可以使用CreatedAtRoute方法返回响应。

这是一个很好的教程,您可以阅读。它提到了 Rest API 的一些 HTTP 建议。

使用 ASP.NET Core MVC 构建您的第一个 Web API

  • 哇,也许我会把这归咎于后期开发。`songleader` 在 `.SaveChanges()` 之后更新,因为它是通过引用传递的,所以只需返回 `songleader` 就可以返回我想要的内容。哇。不过,感谢您的健全性检查:) (2认同)