[C#]Entity Frameworkでデータ更新する(update)

C# C#

前回に引き続き今回は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👍🏻

github

コメント

タイトルとURLをコピーしました