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
book
kommer 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-only
scenarie - De är
quicker to execute
eftersom 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 entity
kommer de fortfarande atttracked by default
Exempel:
I följande fråga, som returnerar en
anonymous type
,will be tracked
förekomsten avBook
i resultatsetusing (var context = new BookContext()) { var book = context.Books.Select(b => new { Book = b, Authors = b.Authors.Count() }); }
Om resultatuppsättningen
does not
innehåller någraentity
utförsno tracking
Exempel:
I följande fråga, som returnerar en
anonymous type
med några av värdena från enheten (menno instances
av 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