Question

À l'heure actuelle à l'aide Subsonic 3 avec activerecord. Purement par curiosité, est-il un moyen facile de mettre à jour ou insérer un enregistrement d'une manière propre et concise?

Au lieu de

 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
 }
Était-ce utile?

La solution

Les modèles standard ActiveRecord fournissent une méthode de sauvegarde (), qui soit des appels selon que l'objet Ajouter () ou mise à jour () ISNEW (). Il devrait fonctionner dans l'échantillon que vous avez donné.

Autres conseils

Vous devez également être en mesure de le faire comme ceci:

            // 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();

Au moins qui est la façon dont je l'ai fait dans un de mes projets. Les méthodes Insert(), Update() et Delete() sont générés par Context.tt dans le fichier Context.cs (j'utilise les fichiers T4 "ActiveRecord").


Modifier

Oh, je suis désolé, quand je Forst lu votre question, je pensais que vous demandiez un moyen plus facile de « Insérer » ou « Mise à jour » , mais après le relisant, je me suis rendu vous demandez « Insérer ou mettre à jour si elle existe déjà » comme faire un « upsert ».

Désolé, ma réponse ne couvre pas vraiment. Je ne sais pas d'une bonne façon de le faire non plus. habituellement je viens de finir par faire ce que vous faites ... essayez de le sélectionner, et si je reçois aucun résultat, ne l'insert.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top