いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

ADO.NET入門記-015 (Deletedとマークされた行からデータを取得する)


ADO.NETにて一旦Deletedとマークされた行からデータを取得しようとすると通常エラーがでます。
それを回避するためには以下のようにします。

カラムの値を取得する際にDataRowVersion.Originalを指定する。


要は削除前の値として取得するようにするという事ですね。
ちなみに、Deletedとマークされても行データ自体は通常通り取得できます。
エラーが発生するのは、その行の各データにアクセス使用とした場合です。


以下、サンプルです。

protected void Execute(){
    //
    // ここまでの間で、DataTableを取得もしくは作成し、1行目をDeleteしている
    // とします。
    //
    DataRow deletedRow = t.Rows[0];

    // 以下のように現在の値を取得しようとするとエラー.
    // Console.WriteLine(deletedRow[0]);

    // 削除前の値を取得するには以下のようにします。
    Console.WriteLine(deletedRow[0, DataRowVersion.Original]);
}


ちなみに、参考にしたリソースはここで見れます。