Frage

Derzeit verwendet SubSonic 3 mit ActivereCord. Gibt es nur aus Neugier eine einfache Möglichkeit, einen Datensatz auf saubere und übersichtliche Weise zu aktualisieren oder einzusetzen?

Anstatt von

 var record = MyModal.SingleOrDefault(x => x.id == 1)
 if (record != null)
 {
     // code to update record here
 } else {
    // code to insert a record here
    MyModal record = new MyModal();
    record.attribute1 = "blah"
    ... blah blah
 }
War es hilfreich?

Lösung

Die Standard -ActivereCord -Vorlagen bieten eine Save () -Methode, die entweder add () oder update () abhängig davon, ob das Objekt isNew () ist. Es sollte in der Stichprobe funktionieren, die Sie gegeben haben.

Andere Tipps

Sie sollten es auch so machen können:

            // perform insert with a linq expression
            db.Insert.Into<PARTS_VI_PART_NUMBER>(
                x => x.ITEM_NUMBER,
                x => x.ITEM_CLASS_CODE,
                x => x.ITEM_DESCRIPTION,
                x => x.MANUFACTURER
            ).Values(
                "TEST",
                "TEST",
                "TEST",
                "TEST"
            ).Execute();

            // update using linq expression
            db.Update<PARTS_VI_PART_NUMBER>()
                .Set(x => x.ITEM_DESCRIPTION == "UPDATED",
                     x => x.ITEM_CLASS_CODE == "UPDATED2")
                .Where(x => x.ITEM_NUMBER == "TEST")
                .Execute();

            // delete inserted row with a linq expression
            db.Delete<PARTS_VI_PART_NUMBER>(x => x.ITEM_NUMBER == "TEST").Execute();

Zumindest habe ich es so in einem meiner Projekte gemacht. Das Insert(), Update() und Delete() Methoden werden durch generiert von Context.tt in die Context.cs Datei (ich verwende die T4 -Dateien "ActivereCord").


Bearbeiten

Oh, es tut mir leid, als ich Ihre Frage lese, dachte ich, Sie würden nach einer einfacheren Möglichkeit fragen "Einfügen" oder "Update", aber nachdem ich es erneut gelesen hatte, wurde mir klar, dass Sie danach fragen "Fügen Sie ein oder aktualisieren Sie, wenn es bereits existiert" wie ein "Höhen".

Entschuldigung, meine Antwort deckt das nicht wirklich ab. Ich weiß auch keine gute Möglichkeit, es zu tun. Normalerweise mache ich einfach das, was du tust ... versuche es auszuwählen, und wenn ich keine Ergebnisse bekomme, mache ich den Einsatz.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top