Sie sollten in beiden Methoden verwenden, einen Kontext ändern. Verwenden Sie auch nicht db.Entry(member).State = EntityState.Modified;
, weil es Update-Anweisung für alle Eigenschaften generiert. Verwenden Sie stattdessen db.Entry(member).Property("PropertyName").IsModified = true;
. Wenn context.Configuration.AutoDetectChangesEnabled == true
, und Sie Daten aus Kontext abrufen, um zu ändern, müssen Sie keine von ihnen verwenden.
public void FunctionA(DbContext context, int openid)
{
var member = db.Members.Find(openid);
member.A=a;
db.Entry(member).Property("A").IsModified = true;
}
public void FunctionB(DbContext context, int openid)
{
var member = db.Members.Find(openid);
member.B=b;
db.Entry(member).Property("B").IsModified = true;
}
Dann werden beide dieser Methoden aufrufen und SaveChanges
für einen Kontext, wie:
using (NielsenPMContext db = new NielsenPMContext())
{
FunctionA(db, openid);
FunctionB(db, openid);
db.SaveChanges();
}
Hinweis: Haben Sie keine Angst, mit Find
Methode zweimal, weil Entity Framework aus lokalen Kontext bekommen anstelle der Datenbank nach dem ersten Mal. Oder es wird toll sein, Mitglied zu bekommen und es an FunctionA
und FunctionB
zu senden. Und ich glaube, dass Sie einen guten Grund haben, A
und B
Mitglieder in verschiedenen Methoden zu ändern.
wo ist Ihre Funktion A und Funktion B? Kannst du das auch? – Sampath
@Sampath die Antwort unten ist, was ich meine, A & B sind die gleichen, aber ändern Sie die verschiedenen Requisiten der Entität. Ich habe es gelöst, ty auch! – Nico