Suche…


Bemerkungen

Entitäten in Entity Framework können verschiedene Status haben, die in der System.Data.Entity.EntityState- Enumeration aufgelistet sind. Diese Zustände sind:

Added    
Deleted    
Detached    
Modified    
Unchanged

Entity Framework arbeitet mit POCOs. Dies bedeutet, dass Entitäten einfache Klassen sind, die keine Eigenschaften und Methoden zum Verwalten ihres eigenen Status haben. Der Entitätsstatus wird im ObjectStateManager von einem Kontext selbst verwaltet.

In diesem Thema werden verschiedene Möglichkeiten zum Festlegen des Entitätsstatus beschrieben.

Einstellungsstatus Hinzugefügt von einer einzelnen Entität

EntityState.Added kann auf zwei völlig gleichwertige Arten festgelegt werden:

  1. Durch Festlegen des Status des Eintrags im Kontext:

     context.Entry(entity).State = EntityState.Added;
    
  2. Durch Hinzufügen zu einem DbSet des Kontextes:

     context.Entities.Add(entity);
    

Beim Aufruf von SaveChanges wird die Entität in die Datenbank eingefügt. Wenn es eine Identitätsspalte (einen automatisch festgelegten, automatisch inkrementierenden Primärschlüssel) SaveChanges , enthält die Primärschlüsseleigenschaft der Entität nach SaveChanges den neu generierten Wert, auch wenn diese Eigenschaft bereits einen Wert hatte .

Einstellungsstatus Hinzugefügt eines Objektdiagramms

Das Festlegen des Zustands eines Objektdiagramms (einer Sammlung verwandter Entitäten) auf Added unterscheidet sich vom Festlegen einer einzelnen Entität als Added (siehe dieses Beispiel ).

Im Beispiel speichern wir Planeten und ihre Monde:

Klassenmodell

public class Planet
{
    public Planet()
    {
        Moons = new HashSet<Moon>();
    }
    public int ID { get; set; }
    public string Name { get; set; }
    public ICollection<Moon> Moons { get; set; }
}

public class Moon
{
    public int ID { get; set; }
    public int PlanetID { get; set; }
    public string Name { get; set; }
}

Kontext

public class PlanetDb : DbContext
{
    public property DbSet<Planet> Planets { get; set; }
}

Wir verwenden eine Instanz dieses Kontexts, um Planeten und ihre Monde hinzuzufügen:

Beispiel

var mars = new Planet { Name = "Mars" };
mars.Moons.Add(new Moon { Name = "Phobos" });
mars.Moons.Add(new Moon { Name = "Deimos" });

context.Planets.Add(mars);

Console.WriteLine(context.Entry(mars).State);
Console.WriteLine(context.Entry(mars.Moons.First()).State);

Ausgabe:

Added
Added

Was wir hier sehen, ist, dass das Hinzufügen eines Planet auch den Status eines Mondes auf Added .

Wenn ein Unternehmen des Staates zu Einstellung Added , alle Einheiten in ihren Navigationseigenschaften (Eigenschaften , dass „navigieren“ zu anderen Einrichtungen, wie Planet.Moons ) werden auch als markiert Added , soweit sie nicht bereits mit dem Kontext verbunden sind.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow