Skip to content

EntityState

Marcin Sulecki edited this page Mar 28, 2017 · 3 revisions

Stany encji

  • Detached Odłączona

  • Added Dodana

  • Changed Zmodyfikowana

  • Deleted Usunięta

  • Unchaged Niezmieniona

Sprawdzenie stanu encji

var state = context.Entry(customer).State

Zmiana stanu encji

context.Entry(customer).State = EntityState.Changed;

Pobieranie stanu obiektu

                if (context.ChangeTracker.HasChanges())
                {
                    var entries = context.ChangeTracker.Entries();
 
                    foreach (var entry in entries)
                    {
                        Console.WriteLine($"Entity Name: {entry.Entity.GetType().FullName}");
                        Console.WriteLine($"Status: {entry.State}");
                    }
                }

Przykładowe wykorzystanie - zapisywanie daty utworzenia i modyfikacji encji

public abstract class Base
   {
       public DateTime CreatedDate { get; set; }
       public DateTime ModifiedDate { get; set; }
   }


public override int SaveChanges()
        {
 
            var entries = this.ChangeTracker.Entries();
 
            var added = this.ChangeTracker.Entries<Base>()
                .Where(e => e.State == EntityState.Added)
                .Select(e => e.Entity);
 
            var modified = this.ChangeTracker.Entries<Base>()
                .Where(e => e.State == EntityState.Modified)
                .Select(e => e.Entity);
 
            var now = DateTime.UtcNow;
 
            foreach (var entry in added)
            {
                entry.CreatedDate = now;
                entry.ModifiedDate = now;
            }
 
            foreach (var entry in modified)
            {
                entry.ModifiedDate = now;
            }
 
            return base.SaveChanges();
        }
Clone this wiki locally