13
Mar

Simple.Data i "skomplikowany" update

Simple.Datajest super. A ostatnio okazało się jeszcze… supersze.

Chciałem wygenerować zapytanie update “doklejające” pewną wartość do kolumny tekstowej. W Postgre byłoby to coś takiego:

update people set StatusUpdate = StatusUpdate || "new status," where id=1

Jak widać – robię update jednocześnie odwołując się do wartości kolumny z aktualizowanego wiersza
To by akurat nie zadziałało dla pierwszej “iteracji”, bowiem “null || string” zwróci nulla i zawsze miałbym pustą kolumnę. Finalnie w gołym sql powinno być tak:

update people set StatusUpdate = concat(StatusUpdate || "new status,") where id=1

Zmóżdżałem się nad tym zagadnieniem dobry kwadrans, zanim powstał kod robiący dokładnie to czego potrzebuję:

int id = 1;
string newStatus = "new status";
var peopleTable = db.People;
peopleTable.UpdateAll(
    peopleTable.Id == id
    , StatusUpdate: peopleTable.StatusUpdate.concat(newStatus + ",")
);

Działa mi to na Postgre, bo na Postgre jest funkcja concat operująca na stringach! Oczywiście nie tylko na Postgre jest funkcja concat() operująca na stringach, ale to nie ma znaczenia. Znaczenie ma fakt, że Simple.Data potrafi w ten sposób wykorzystywać funkcje dostępne w bazie, której akurat przyszło nam używać.

Awesome.

Autor

Maciej Aniserowicz

Maciej Aniserowicz
"Procent"
developer / architect

MVP
MCP

Search
Facebook
Twitter
Archiwum
Kategorie
© Copyright 2008-2014 Maciej Aniserowicz. All rights reserved. Running on WordPress.