Ich habe ein Modell namens User (abgeleitet von meiner Datenbank) und ich füge Methoden innerhalb der partiellen Klasse hinzu, was es dem Benutzerobjekt erlaubt, Wartungsarbeiten durchzuführen.Wie kann ich EntityFramework Model in sich selbst speichern?
Als Beispiel möchte ich meine Anwendung wie des Benutzers SupervisorID in seiner Datenbank in Ausrichtung mit einer anderen Datenbank zu aktualisieren:
public partial class User
{
DatabaseEntities db = new DatabaseEntities();
OtherEntities otherDB = new CommonEntities();
public void UpdateSupervisor()
{
// Lookup the Supervisor's Username in the other Database:
string supervisorUsername = (from x in otherDB.vwEmployees
join y in otherDB.vwEmployees on x.Supervisor_EID equals y.Employee_ID
where x.User_ID == searchUsername
select y.User_ID).FirstOrDefault();
// Update the database to record the Supervisor of this staff member:
this.SupervisorUserID = (from x in db.Users
where x.ADUsername == supervisorUsername
select x.UserID).FirstOrDefault();
// At this point, this.SupervisorUserID stores the correct int, but the following command doesn't save any changes.
db.SaveChanges();
}
}
Der Code funktioniert, mit der Ausnahme, dass die db.SaveChanges() nicht speichern alles (keine Fehler).
Verfahren außerhalb dieser Klasse genannt wird, als Teil der Login-Verarbeitung:
public class Login {
// Connect to the database:
DatabaseEntities db = new DatabaseEntities();
User currentUser = new User();
// Do some stuff...
// Update the user's supervisor:
currentUser.UpdateSupervisor();
}
Irgendwelche Ideen?
Danke,
Russell
ist die gleiche Instanz von 'DatabaseEntities' wie' db' verwendet? Andernfalls würde es keine Änderungen feststellen, da 'db' nur verwendet wird, um Daten in dem von Ihnen geposteten Code zu erhalten. Wenn 'this' mit einer anderen Instanz empfangen wird, funktioniert es nicht. –
Aktualisiert die Frage - ich hoffe, es ist klarer. :-) –