Simple.Data i "skomplikowany" update

3

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.

Share.

About Author

Programista, trener, prelegent, pasjonat, blogger. Autor jedynego polskiego podcasta programistycznego: DevTalk.pl. Jeden z liderów Białostockiej Grupy .NET. Od 2008 Microsoft MVP w kategorii .NET. Więcej informacji znajdziesz na stronie O autorze. Napisz do mnie ze strony Kontakt. Dodatkowo: Twitter, Facebook.

3 Comments

  1. Pingback: dotnetomaniak.pl