3

このコードの構文は受け入れられます:

public async Task UpdateLocationAsync(SOs_Locations locations)
{
    var db = new SQLiteAsyncConnection(SQLitePath);
    await db.UpdateAsync(locations);
}

...しかし、単純にクラス インスタンスに渡されたときに、どのレコードを更新するかを SQLite エンジンがどのように認識しているかはわかりません。SQLite または SQLite-net エンジンが ID 値を覗き込み、舞台裏で (SQLese で) 次のことを行う場合ですか?

UPDATE SOs_Locations
Set Bla = Bla, etc.
WHERE ID = locations.Id

?

4

1 に答える 1

3

それはまさにそれがすることです。ここでメソッドのソースを確認できます:

var q = string.Format ("update \"{0}\" set {1} where {2} = ? ", map.TableName, string.Join (",", (from c in cols
        select "\"" + c.Name + "\" = ? ").ToArray ()), pk.Name);

もちろん、さらに制御が必要な場合は、いつでも独自の SQL を実行できます。

db.ExecuteAsync("UPDATE SOs_Locations Set Bla = ?, WHERE ID = ?", bla, id);
于 2012-12-23T07:48:46.550 に答える