Zoeken…


Opmerkingen

Entiteiten in Entity Framework kunnen verschillende statussen hebben die worden vermeld door de System.Data.Entity.EntityState- opsomming. Deze staten zijn:

Added    
Deleted    
Detached    
Modified    
Unchanged

Entity Framework werkt met POCO's. Dat betekent dat entiteiten eenvoudige klassen zijn die geen eigenschappen en methoden hebben om hun eigen status te beheren. Entiteitsstatus wordt beheerd door een context zelf, in ObjectStateManager .

Dit onderwerp behandelt verschillende manieren om de status van een entiteit in te stellen.

Instellingsstatus Toegevoegd van een enkele entiteit

EntityState.Added kan op twee volledig equivalente manieren worden ingesteld:

  1. Door de status van de invoer in de context in te stellen:

     context.Entry(entity).State = EntityState.Added;
    
  2. Door het toe te voegen aan een DbSet van de context:

     context.Entities.Add(entity);
    

Wanneer u SaveChanges , wordt de entiteit in de database ingevoegd. Wanneer het een identiteitskolom heeft (een automatisch ingestelde, automatisch oplopende primaire sleutel), zal na SaveChanges de eigenschap primaire sleutel van de entiteit de nieuw gegenereerde waarde bevatten, zelfs wanneer deze eigenschap al een waarde had .

Instellingsstatus Toegevoegd van een objectgrafiek

Het instellen van de status van een objectgrafiek (een verzameling gerelateerde entiteiten) op Added is anders dan het instellen van een enkele entiteit op Added (zie dit voorbeeld ).

In het voorbeeld slaan we planeten en hun manen op:

Klasse model

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; }
}

Context

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

We gebruiken een exemplaar van deze context om planeten en hun manen toe te voegen:

Voorbeeld

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);

Output:

Added
Added

Wat we hier zien is dat het toevoegen van een Planet ook de staat van een maan instelt op Added .

Wanneer u de status van een entiteit instelt op Added , worden alle entiteiten in de navigatie-eigenschappen (eigenschappen die naar andere entiteiten "navigeren", zoals Planet.Moons ) ook gemarkeerd als Added , tenzij ze al aan de context zijn gekoppeld .



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow