前回に引き続き今回はupdateを試してみます。
確認環境
・sqlserver2019(docker)
・Azure Functions(.Net Core 2.1)
・NuGetライブラリ
=> Microsoft.EntityFrameworkCore 2.2.6
=> Microsoft.EntityFrameworkCore.Design 2.2.6
=> Microsoft.EntityFrameworkCore.SqlServer 2.2.6
=> Microsoft.Net.Sdk.Functions 1.0.31
リクエストするデータを用意
更新用に下記jsonを使います。
Idでデータを取ってきて、取得できたデータに対して更新します。
{
Id : 1,
Title: "タイトル更新",
UserName: "ユーザ更新",
AboutText: "概要更新",
Password: "password更新",
}
サンプルコード
[FunctionName("EntityFrameworkTestController_Update")]
public static async System.Threading.Tasks.Task<IActionResult> UpdateAsync(
[HttpTrigger(AuthorizationLevel.Function, "get", Route = "efcore_test_update")] HttpRequest req,
ILogger log
)
{
log.LogInformation("start EntityFrameworkTestController_Update");
// jsonリクエストを取得
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
dynamic data = JsonConvert.DeserializeObject(requestBody);
// jsonリクエストで掲示板更新
using (var _dbContext = new DBContextFactory().CreateDbContext())
{
var board = _dbContext.Boards.Find((long)data?.Id);
if (board != null)
{
board.Title = data?.Title;
board.UserName = data?.UserName;
board.AboutText = data?.AboutText;
board.Password = data?.Password;
_dbContext.SaveChanges();
}
}
return new OkResult();
}
やっていること
jsonリクエストを取得して、取得できたIdをキーにBoardテーブルをFindしてデータを取得します。
データがあったら、取れたオブジェクトのプロパティにそれぞれ、リクエストのデータを当て込んでいます。
最後に_dbContext.SaveChanges();を呼んでデータを更新しています。
データ更新する時は上記のように、selectした後に、それぞれのプロパティにデータを入れて、最後に SaveChanges(); を呼ぶという流れになります。
動作確認
3件の適当なデータが入っているので、Postmanで下記を飛ばして更新します。
DBを確認します…
OK👍🏻
コメント