Frage

Entity Framework bietet eine große Flexibilität Daten in der gleichen Datacontext zu aktualisieren

Dim personA = (from p in datacontext.Person where p.PersonID = 1 select p)
personA.name = txtName.value
datacontext.savechanges()

Wenn ich diese Funktion Update Service-Schicht zu bewegen, die nur „Person“ in der Anfrage nimmt, was wäre der beste Weg, um mein „Person“ Request-Objekts in die Datacontext zuweisen, ohne erneut das tiefe Kopieren zu tun?

War es hilfreich?

Lösung

Sie benötigen Entitätsobjekt mit einem Datenkontext zu befestigen.

Sie müssen auch Ihre Datenkontext partielle Klasse mit dem AttachUpdeted Verfahren erweitern. Wie, wenn Sie ein Objekt mit einem Datenkontext anhängen weiß es nicht, dass Aktualisierungen vorgenommen wurden. Der folgende Code wird den Datenkontext sagen, jede Eigenschaft wurde aktualisiert und muss in die Datenbank geschrieben werden.

public static void Save(EntityObject entity)
{
   using(MyContext ctx = new MyContext)
   {
     ctx.AttachUpdated(entity);
     ctx.SaveChanges();
   }  
} 

public static void AttachUpdated(this ObjectContext obj, EntityObject objectDetached)
{
   if (objectDetached.EntityState == EntityState.Detached)
   {
      object original = null;
      if (obj.TryGetObjectByKey(objectDetached.EntityKey, out original))
         obj.ApplyPropertyChanges(objectDetached.EntityKey.EntitySetName, objectDetached);
      else
       throw new ObjectNotFoundException();
    }
} 

Artikel 1
Artikel 2

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top