.NET Coreで挿入された行のIDを取得する方法


  1. 自動インクリメントされたIDを使用する場合: 一般的な方法は、データベーステーブルで自動インクリメントされたIDフィールドを使用することです。挿入後、データベースから挿入された行のIDを取得できます。

    public async Task<int> InsertData(MyModel model)
    {
       using (var connection = new SqlConnection(connectionString))
       {
           await connection.OpenAsync();
           var query = "INSERT INTO MyTable (Column1, Column2) VALUES (@Column1, @Column2); SELECT SCOPE_IDENTITY();";
           var parameters = new { Column1 = model.Value1, Column2 = model.Value2 };
           var insertedId = await connection.ExecuteScalarAsync<int>(query, parameters);
           return insertedId;
       }
    }

    この例では、MyModelというモデルを持つテーブル MyTable にデータを挿入しています。SCOPE_IDENTITY() 関数を使用して、挿入された行のIDを取得しています。

  2. OUTPUT句を使用する場合: もう1つの方法は、OUTPUT句を使用して挿入された行のIDを取得することです。以下は、この方法を使用した例です。

    public async Task<int> InsertData(MyModel model)
    {
       using (var connection = new SqlConnection(connectionString))
       {
           await connection.OpenAsync();
           var query = "INSERT INTO MyTable (Column1, Column2) OUTPUT INSERTED.Id VALUES (@Column1, @Column2);";
           var parameters = new { Column1 = model.Value1, Column2 = model.Value2 };
           var insertedId = await connection.ExecuteScalarAsync<int>(query, parameters);
           return insertedId;
       }
    }

    この例では、INSERT INTO ステートメントの後に OUTPUT INSERTED.Id を追加して、挿入された行のIDを取得しています。

これらは、.NET Coreで挿入された行のIDを取得するための一般的な方法です。使用するデータベースによってサポートされている方法や、使用しているORM(Object-Relational Mapping)ツールによってさまざまな方法が存在する場合もあります。