Entity Framework
Tracking vs. No-Tracking
Sök…
Anmärkningar
Spårningsbeteende styr huruvida Entity Framework ska behålla information om en enhetsinstans i dess ändringsspårning. Om en enhet spåras kommer alla ändringar som upptäcks i enheten att fortsätta till databasen under SaveChanges() .
Spåra frågor
- Som standard spårar frågor som returnerar entitetstyper
- Detta innebär att du kan göra ändringar i dessa instansinstanser och få ändringarna kvar av
SaveChanges()
Exempel:
- Ändringen av
bookkommer att upptäckas och fortsätter till databasen underSaveChanges().
using (var context = new BookContext())
{
var book = context.Books.FirstOrDefault(b => b.BookId == 1);
book.Rating = 5;
context.SaveChanges();
}
Frågor utan spårning
- Inga spårningsfrågor är användbara när resultaten används i en
read-onlyscenarie - De är
quicker to executeeftersom det inte finns något behov att konfigurera spårningsinformation för ändring
Exempel:
using (var context = new BookContext())
{
var books = context.Books.AsNoTracking().ToList();
}
Med EF Core 1.0 kan du också ändra standardspårningsbeteendet på context instance .
Exempel:
using (var context = new BookContext())
{
context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
var books = context.Books.ToList();
}
Spårning och prognoser
- Även om resultattypen för frågan inte är en entitetstyp, om resultatet
contains entitykommer de fortfarande atttracked by default
Exempel:
I följande fråga, som returnerar en
anonymous type,will be trackedförekomsten avBooki resultatsetusing (var context = new BookContext()) { var book = context.Books.Select(b => new { Book = b, Authors = b.Authors.Count() }); }Om resultatuppsättningen
does notinnehåller någraentityutförsno tracking
Exempel:
I följande fråga, som returnerar en
anonymous typemed några av värdena från enheten (menno instancesav den faktiskaentity), utförs ingen spårning .using (var context = new BookContext()) { var book = context.Books.Select(b => new { Id = b.BookId, PublishedDate = b.Date }); }
Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow