Ich frage mich, wie man ein Massenupdate durchführt? Ich möchte eine Where-Klausel verwenden und alle Elemente erfassen, die diese Where-Klausel erfüllen Where(x => x.Id == 1).ToList()
und dann eine Aktualisierung für alle vornehmen.
// change every name to bob
A.Name = "bob"
// then do a mass update
Muss ich eine foreach-Schleife ausführen? Und gehen Sie durch jeden einzelnen und dann senden Sie es aktualisiert werden oder gibt es eine andere Möglichkeit, dies zu tun?
Gracias
Editar
Ich habe diese
// in my repo;
private readonly ISession session;
// session done with ninject IOC
public MyRepo(ISession session)
{
this.session = session;
}
public void MassUpdate(int id, string prefix)
{
var query = "UPDATE TableA SET Name= (:prefix) WHERE Id IN (:Id)";
session.CreateQuery(query).SetParameter("prefix", prefix).SetParameter("Id",Id);
}
public void Insert(MyClass myClass)
{
sesson.save(myClass);
}
public void Commit()
{
using (ITransaction transaction = session.BeginTransaction())
{
transaction.Commit();
}
}
// service layer method
public void myMethod()
{
MyClass myClass = nw MyClass() { Name = "test"};
MyRepo r = new Repo();
r.MassUpdate(1,"bob");
r.Insert(myClass);
r.Commit();
}
Wie kann ich also mein MassUpdate so einrichten, dass es bei Commit() ausgeführt wird? Beachten Sie, dass dieses Commit für alle Methoden in MyRepo verwendet wird, so dass ich die Ausführung nicht in die Commit-Methode stecken kann.