Getrenntes Verhalten von Entity Framework beim Aktualisieren des Objektdiagramms
Ich arbeite derzeit an einem Projekt, das folgende Technologien verwendet.
ASP.net MVC - PräsentationsebeneDatendienstschicht - (WCF)DTO-Layer (Data Transfer Objects) mit Auto MapperDomänenschicht (POCO, Code First Entity Framework)Repository-Ebene + Entity Framework 4.3 + DbContext.Wir verwenden DTOs, um Domain-Objekte mithilfe der automatischen Zuordnung umzuwandeln und über den WCF-Dienst an das Front-End zu senden.
Außerdem erstellen wir für jede Anforderung einen auf Anforderungen basierenden DBContext in der WCF-Ebene, und unser WCF-Dienstkontext wird durch die Aktivierung von Per Call und No Tracking in clientseitigen DTOs erstellt und ist vollständig getrennt.
Wir haben auch folgenden Objektgraphen.
public class User : BaseEntity
{
public virtual Identity Identity { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public int IdentityId { get; set; }
public virtual IList<Group> Groups{ get; set; }
}
public class Identity : BaseEntity
{
public string FirstName { get; set; }
public string LastName { get; set; }
public virtual IList<Email> Emails { get; set; }
public virtual IList<PhoneNumber> PhoneNumbers { get; set; }
}
Unsere Dto-Struktur ist im Vergleich zu Domain eher dieselbe.
Meine Fragen:
Wenn es darum geht, Objektgraphen zu aktualisieren Zum Beispiel:UpdateUser (User user); Was ist der beste Ansatz für Entity Framework?
Jetzt verwenden wir einzelne Funktionen, um Navigationsdaten zu speichern, zB:UpdateEmail (Benutzer-ID, E-Mail)(Speichert nur primitive Daten, keine Beziehungen); Daher werden viele Einfügungen und Aktualisierungen in der Datenbank vorgenommen, wenn wir die eine UnitOfWork betrachten.
Aktuelle Implementierung wie folgt
public void UpdateUser(User user)
{
UpdateEmail(user.userId, user.Idenity.Emails);
UpdatePhone(user.userId, user.Identity.PhoneNumbers);
etc.............
UpdateUser(user);
UnitOfWork.Commit();// Calling DbContext.SaveChanges();
}
Gibt es ein Muster oder eine bewährte Methode, die wir mit Entity Framework in der obigen Situation mit nicht verbundenem Objektdiagramm verwenden können?