Subsonic 3 - Insérer de mise à jour
-
27-10-2019 - |
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
}
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.