DbContext Třída

Definice

Instance DbContext představuje relaci s databází a lze ji použít k dotazování a ukládání instancí entit. DbContext je kombinace pracovní jednotky a vzorů úložiště.

Entity Framework Core nepodporuje spouštění více paralelních operací na stejné instanci DbContext. To zahrnuje paralelní spuštění asynchronních dotazů a jakékoli explicitní souběžné použití z více vláken. Proto vždy čekají na asynchronní volání nebo použijte samostatné instance DbContext pro operace, které se spouštějí paralelně. Další informace najdete v tématu předcházení problémům s vlákny DbContext .

public class DbContext : IDisposable, Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>
public class DbContext : IDisposable, Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>, Microsoft.EntityFrameworkCore.Internal.IDbContextDependencies, Microsoft.EntityFrameworkCore.Internal.IDbContextPoolable, Microsoft.EntityFrameworkCore.Internal.IDbSetCache
public class DbContext : IDisposable, Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>, Microsoft.EntityFrameworkCore.Internal.IDbContextDependencies, Microsoft.EntityFrameworkCore.Internal.IDbContextPoolable, Microsoft.EntityFrameworkCore.Internal.IDbQueryCache, Microsoft.EntityFrameworkCore.Internal.IDbSetCache
public class DbContext : IAsyncDisposable, IDisposable, Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>, Microsoft.EntityFrameworkCore.Internal.IDbContextDependencies, Microsoft.EntityFrameworkCore.Internal.IDbContextPoolable, Microsoft.EntityFrameworkCore.Internal.IDbSetCache
type DbContext = class
    interface IDisposable
    interface IInfrastructure<IServiceProvider>
type DbContext = class
    interface IDisposable
    interface IInfrastructure<IServiceProvider>
    interface IDbContextDependencies
    interface IDbSetCache
    interface IDbContextPoolable
type DbContext = class
    interface IDisposable
    interface IInfrastructure<IServiceProvider>
    interface IDbContextDependencies
    interface IDbSetCache
    interface IDbQueryCache
    interface IDbContextPoolable
type DbContext = class
    interface IDisposable
    interface IAsyncDisposable
    interface IInfrastructure<IServiceProvider>
    interface IDbContextDependencies
    interface IDbSetCache
    interface IDbContextPoolable
    interface IResettableService
type DbContext = class
    interface IInfrastructure<IServiceProvider>
    interface IDbContextDependencies
    interface IDbSetCache
    interface IDbContextPoolable
    interface IResettableService
    interface IDisposable
    interface IAsyncDisposable
Public Class DbContext
Implements IDisposable, IInfrastructure(Of IServiceProvider)
Public Class DbContext
Implements IDbContextDependencies, IDbContextPoolable, IDbSetCache, IDisposable, IInfrastructure(Of IServiceProvider)
Public Class DbContext
Implements IDbContextDependencies, IDbContextPoolable, IDbQueryCache, IDbSetCache, IDisposable, IInfrastructure(Of IServiceProvider)
Public Class DbContext
Implements IAsyncDisposable, IDbContextDependencies, IDbContextPoolable, IDbSetCache, IDisposable, IInfrastructure(Of IServiceProvider)
Dědičnost
DbContext
Implementuje
IInfrastructure<IServiceProvider> IDisposable Microsoft.EntityFrameworkCore.Internal.IDbContextDependencies Microsoft.EntityFrameworkCore.Internal.IDbContextPoolable Microsoft.EntityFrameworkCore.Internal.IDbSetCache Microsoft.EntityFrameworkCore.Internal.IDbQueryCache IResettableService IAsyncDisposable

Poznámky

Obvykle vytvoříte třídu, která je odvozena z DbContext a obsahuje DbSet<TEntity> vlastnosti pro každou entitu v modelu. Pokud DbSet<TEntity> vlastnosti mají veřejnou metodu Setter, jsou automaticky inicializovány při vytvoření instance odvozeného kontextu.

Přepsat OnConfiguring(DbContextOptionsBuilder) metodu pro konfiguraci databáze (a dalších možností), které mají být použity pro kontext. Alternativně, pokud byste raději neprováděli konfiguraci externě namísto vloženého kontextu, můžete použít DbContextOptionsBuilder<TContext> (nebo DbContextOptionsBuilder ) k externímu vytvoření instance DbContextOptions<TContext> (nebo DbContextOptions ) a předat ji základnímu konstruktoru DbContext .

Model je zjištěn spuštěním sady konvencí nad třídami entit, které se nacházejí ve DbSet<TEntity> vlastnostech odvozeného kontextu. Chcete-li dále konfigurovat model, který je zjištěn podle konvence, můžete OnModelCreating(ModelBuilder) metodu přepsat.

Další informace najdete v tématu DbContext – doba života, konfigurace a inicializace, dotazování dat pomocí EF Core, Změna sledovánía ukládání dat pomocí EF Core .

Konstruktory

DbContext()

Inicializuje novou instanci DbContext třídy. Parametr OnConfiguring(DbContextOptionsBuilder) nahraďte názvem sestavy. Metoda bude volána pro konfiguraci databáze (a dalších možností), které mají být použity pro tento kontext.

DbContext(DbContextOptions)

Inicializuje novou instanci DbContext třídy pomocí zadaných možností. OnConfiguring(DbContextOptionsBuilder)Metoda bude stále volána, aby bylo možné provést další konfiguraci možností.

Vlastnosti

ChangeTracker

Poskytuje přístup k informacím a operacím pro instance entit, které tento kontext sleduje.

ContextId

Jedinečný identifikátor pro kontextovou instanci a zapůjčení fondu, pokud je k dispozici.

Tento identifikátor je primárně určen jako ID korelace pro protokolování a ladění, aby bylo možné snadno identifikovat, že několik událostí používá stejné nebo různé kontextové instance.

Database

Poskytuje přístup k informacím a operacím souvisejícím s databází pro tento kontext.

Model

Metadata týkající se tvaru entit, jejich vztahů mezi nimi a jejich mapování na databázi. Nemusí obsahovat všechny informace potřebné k inicializaci databáze.

Metody

Add(Object)

Začne sledovat danou entitu a všechny další dosažitelné entity, které ještě nejsou sledovány, ve Added stavu, v jakém budou vloženy do databáze při SaveChanges() volání.

Slouží State k nastavení stavu pouze jedné entity.

Add<TEntity>(TEntity)

Začne sledovat danou entitu a všechny další dosažitelné entity, které ještě nejsou sledovány, ve Added stavu, v jakém budou vloženy do databáze při SaveChanges() volání.

Slouží State k nastavení stavu pouze jedné entity.

AddAsync(Object, CancellationToken)

Začne sledovat danou entitu a všechny další dosažitelné entity, které ještě nejsou sledovány, ve Added stavu, v jakém budou vloženy do databáze při SaveChanges() volání.

Slouží State k nastavení stavu pouze jedné entity.

Tato metoda je asynchronní pouze pro povolení generátorů speciální hodnoty, jako je například ta, kterou používá Microsoft. EntityFrameworkCore. Metadata. SqlServerValueGenerationStrategy. SequenceHiLo, pro asynchronní přístup k databázi. Pro všechny ostatní případy by se měla použít neasynchronní metoda.

Entity Framework Core nepodporuje spouštění více paralelních operací na stejné instanci DbContext. To zahrnuje paralelní spuštění asynchronních dotazů a jakékoli explicitní souběžné použití z více vláken. Proto vždy čekají na asynchronní volání nebo použijte samostatné instance DbContext pro operace, které se spouštějí paralelně. Další informace najdete v tématu předcházení problémům s vlákny DbContext .

AddAsync<TEntity>(TEntity, CancellationToken)

Začne sledovat danou entitu a všechny další dosažitelné entity, které ještě nejsou sledovány, ve Added stavu, v jakém budou vloženy do databáze při SaveChanges() volání.

Tato metoda je asynchronní pouze pro povolení generátorů speciální hodnoty, jako je například ta, kterou používá Microsoft. EntityFrameworkCore. Metadata. SqlServerValueGenerationStrategy. SequenceHiLo, pro asynchronní přístup k databázi. Pro všechny ostatní případy by se měla použít neasynchronní metoda.

Entity Framework Core nepodporuje spouštění více paralelních operací na stejné instanci DbContext. To zahrnuje paralelní spuštění asynchronních dotazů a jakékoli explicitní souběžné použití z více vláken. Proto vždy čekají na asynchronní volání nebo použijte samostatné instance DbContext pro operace, které se spouštějí paralelně. Další informace najdete v tématu předcházení problémům s vlákny DbContext .

AddRange(IEnumerable<Object>)

Spustí sledování daných entit a všechny další dosažitelné entity, které ještě nejsou sledovány, ve Added stavu tak, že budou vloženy do databáze při SaveChanges() volání.

AddRange(Object[])

Spustí sledování daných entit a všechny další dosažitelné entity, které ještě nejsou sledovány, ve Added stavu tak, že budou vloženy do databáze při SaveChanges() volání.

AddRangeAsync(IEnumerable<Object>, CancellationToken)

Začne sledovat danou entitu a všechny další dosažitelné entity, které ještě nejsou sledovány, ve Added stavu, v jakém budou vloženy do databáze při SaveChanges() volání.

Tato metoda je asynchronní pouze pro povolení generátorů speciální hodnoty, jako je například ta, kterou používá Microsoft. EntityFrameworkCore. Metadata. SqlServerValueGenerationStrategy. SequenceHiLo, pro asynchronní přístup k databázi. Pro všechny ostatní případy by se měla použít neasynchronní metoda.

Entity Framework Core nepodporuje spouštění více paralelních operací na stejné instanci DbContext. To zahrnuje paralelní spuštění asynchronních dotazů a jakékoli explicitní souběžné použití z více vláken. Proto vždy čekají na asynchronní volání nebo použijte samostatné instance DbContext pro operace, které se spouštějí paralelně. Další informace najdete v tématu předcházení problémům s vlákny DbContext .

AddRangeAsync(Object[])

Začne sledovat danou entitu a všechny další dosažitelné entity, které ještě nejsou sledovány, ve Added stavu, v jakém budou vloženy do databáze při SaveChanges() volání.

Tato metoda je asynchronní pouze pro povolení generátorů speciální hodnoty, jako je například ta, kterou používá Microsoft. EntityFrameworkCore. Metadata. SqlServerValueGenerationStrategy. SequenceHiLo, pro asynchronní přístup k databázi. Pro všechny ostatní případy by se měla použít neasynchronní metoda.

Entity Framework Core nepodporuje spouštění více paralelních operací na stejné instanci DbContext. To zahrnuje paralelní spuštění asynchronních dotazů a jakékoli explicitní souběžné použití z více vláken. Proto vždy čekají na asynchronní volání nebo použijte samostatné instance DbContext pro operace, které se spouštějí paralelně. Další informace najdete v tématu předcházení problémům s vlákny DbContext .

Attach(Object)

Začne sledovat danou entitu a položky dosažitelné z dané entity Unchanged ve výchozím nastavení, ale v případě použití jiného stavu se zobrazí níže.

Obecně platí, že žádná interakce databáze nebude provedena, dokud SaveChanges() nebude volána.

Budou provedeny rekurzivní hledání vlastností navigace, aby bylo možné najít dosažitelné entity, které nejsou již sledovány kontextem. Všechny nalezené entity budou sledovány kontextem.

U typů entit s generovanými klíči, pokud má entita nastavenou hodnotu primárního klíče, bude sledována ve Unchanged stavu. Pokud hodnota primárního klíče není nastavená, bude sledována ve Added stavu. To pomáhá zajistit, aby se vložily jenom nové entity. Entita je považována za nastavenou hodnotu svého primárního klíče, pokud je vlastnost primárního klíče nastavena na cokoli jiného, než je výchozí hodnota CLR pro typ vlastnosti.

U typů entit bez vygenerované klíče je stavová sada vždy Unchanged .

Slouží State k nastavení stavu pouze jedné entity.

Attach<TEntity>(TEntity)

Začne sledovat danou entitu a položky dosažitelné z dané entity pomocí stavu ve výchozím nastavení, ale níže se podívejte na případy, kdy se použije Unchanged jiný stav.

Obecně platí, že dokud se nezavolána, neprovádí se SaveChanges() žádná interakce s databází.

Provede se rekurzivní vyhledávání vlastností navigace, aby se zjistily dosažitelné entity, které kontext ještě nesleduje. Všechny nalezené entity budou sledovány kontextem.

U typů entit s generovanými klíči, pokud má entita nastavenou hodnotu primárního klíče, bude sledována ve Unchanged stavu . Pokud není hodnota primárního klíče nastavená, bude sledována ve Added stavu . To pomáhá zajistit, aby se vložily jenom nové entity. Entita je považována za nastavenou hodnotu svého primárního klíče, pokud je vlastnost primárního klíče nastavena na cokoli jiného, než je výchozí hodnota CLR pro typ vlastnosti.

U typů entit bez vygenerované klíče je stavová sada vždy Unchanged .

Slouží State k nastavení stavu pouze jedné entity.

AttachRange(IEnumerable<Object>)

Začne ve výchozím nastavení sledovat dané entity a položky, ke které jsou z těchto entit ve výchozím nastavení dosažitelné, ale níže se podívejte na případy, kdy se Unchanged použije jiný stav.

Obecně platí, že dokud se nezavolána, neprovádí se SaveChanges() žádná interakce s databází.

Provede se rekurzivní vyhledávání vlastností navigace, aby se zjistily dosažitelné entity, které kontext ještě nesleduje. Všechny nalezené entity budou sledovány kontextem.

U typů entit s generovanými klíči, pokud má entita nastavenou hodnotu primárního klíče, bude sledována ve Unchanged stavu . Pokud není hodnota primárního klíče nastavená, bude sledována ve Added stavu . To pomáhá zajistit, aby se vložily jenom nové entity. Entita je považována za nastavenou hodnotu svého primárního klíče, pokud je vlastnost primárního klíče nastavena na cokoli jiného, než je výchozí hodnota CLR pro typ vlastnosti.

U typů entit bez vygenerované klíče je stavová sada vždy Unchanged .

Slouží State k nastavení stavu pouze jedné entity.

AttachRange(Object[])

Začne ve výchozím nastavení sledovat dané entity a položky, ke které jsou z těchto entit ve výchozím nastavení dosažitelné, ale níže se podívejte na případy, kdy se Unchanged použije jiný stav.

Obecně platí, že dokud se nezavolána, neprovádí se SaveChanges() žádná interakce s databází.

Provede se rekurzivní vyhledávání vlastností navigace, aby se zjistily dosažitelné entity, které kontext ještě nesleduje. Všechny nalezené entity budou sledovány kontextem.

U typů entit s generovanými klíči, pokud má entita nastavenou hodnotu primárního klíče, bude sledována ve Unchanged stavu . Pokud není hodnota primárního klíče nastavená, bude sledována ve Added stavu . To pomáhá zajistit, aby se vložily jenom nové entity. Entita je považována za nastavenou hodnotu svého primárního klíče, pokud je vlastnost primárního klíče nastavena na cokoli jiného, než je výchozí hodnota CLR pro typ vlastnosti.

U typů entit bez vygenerované klíče je stavová sada vždy Unchanged .

Slouží State k nastavení stavu pouze jedné entity.

ConfigureConventions(ModelConfigurationBuilder)

Přepsáním této metody nastavte výchozí hodnoty a nakonfigurujte konvence před jejich spuštěním. Tato metoda je vyvolána před OnModelCreating(ModelBuilder) .

Dispose()

Uvolní přidělené prostředky pro tento kontext.

DisposeAsync()

Uvolní přidělené prostředky pro tento kontext.

Entity Framework Core nepodporuje spuštění více paralelních operací ve stejné instanci DbContext. To zahrnuje jak paralelní spouštění asynchronních dotazů, tak jakékoli explicitní souběžné použití z více vláken. Proto vždy ihned čekejte na asynchronní volání nebo použijte samostatné instance DbContext pro operace, které se spouští paralelně. Další informace najdete v tématu Předcházení problémům s threadingem DbContext.

Entry(Object)

Získá EntityEntry pro danou entitu . Položka poskytuje přístup k informacím a operacím sledování změn pro entitu.

Tato metoda může být volána u entity, která není sledována. Vlastnost vrácené položky pak můžete nastavit tak, aby kontext začal sledovat State entitu v zadaném stavu.

Entry<TEntity>(TEntity)

Získá EntityEntry<TEntity> pro danou entitu . Položka poskytuje přístup k informacím a operacím sledování změn pro entitu.

Find(Type, Object[])

Vyhledá entitu s danými hodnotami primárního klíče. Pokud kontext sleduje entitu s danými hodnotami primárního klíče, vrátí se okamžitě bez provedení požadavku na databázi. V opačném případě se do databáze pro entitu zařadí dotaz s danými hodnotami primárního klíče a tato entita, pokud je nalezena, je připojena k kontextu a vrácena. Pokud není nalezena žádná entita, vrátí se hodnota null.

Find<TEntity>(Object[])

Vyhledá entitu s danými hodnotami primárního klíče. Pokud kontext sleduje entitu s danými hodnotami primárního klíče, vrátí se okamžitě bez provedení požadavku na databázi. V opačném případě se do databáze pro entitu zařadí dotaz s danými hodnotami primárního klíče a tato entita, pokud je nalezena, je připojena k kontextu a vrácena. Pokud není nalezena žádná entita, vrátí se hodnota null.

FindAsync(Type, Object[])

Vyhledá entitu s danými hodnotami primárního klíče. Pokud kontext sleduje entitu s danými hodnotami primárního klíče, vrátí se okamžitě bez provedení požadavku na databázi. V opačném případě se do databáze pro entitu zařadí dotaz s danými hodnotami primárního klíče a tato entita, pokud je nalezena, je připojena k kontextu a vrácena. Pokud není nalezena žádná entita, vrátí se hodnota null.

Entity Framework Core nepodporuje spuštění více paralelních operací ve stejné instanci DbContext. To zahrnuje jak paralelní spouštění asynchronních dotazů, tak jakékoli explicitní souběžné použití z více vláken. Proto vždy ihned čekejte na asynchronní volání nebo použijte samostatné instance DbContext pro operace, které se spouští paralelně. Další informace najdete v tématu Předcházení problémům s threadingem DbContext.

FindAsync(Type, Object[], CancellationToken)

Vyhledá entitu s danými hodnotami primárního klíče. Pokud kontext sleduje entitu s danými hodnotami primárního klíče, vrátí se okamžitě bez provedení požadavku na databázi. V opačném případě se do databáze pro entitu zařadí dotaz s danými hodnotami primárního klíče a tato entita, pokud je nalezena, je připojena k kontextu a vrácena. Pokud není nalezena žádná entita, vrátí se hodnota null.

Entity Framework Core nepodporuje spuštění více paralelních operací ve stejné instanci DbContext. To zahrnuje jak paralelní spouštění asynchronních dotazů, tak jakékoli explicitní souběžné použití z více vláken. Proto vždy ihned čekejte na asynchronní volání nebo použijte samostatné instance DbContext pro operace, které se spouští paralelně. Další informace najdete v tématu Předcházení problémům s threadingem DbContext.

FindAsync<TEntity>(Object[])

Vyhledá entitu s danými hodnotami primárního klíče. Pokud kontext sleduje entitu s danými hodnotami primárního klíče, vrátí se okamžitě bez provedení požadavku na databázi. V opačném případě se do databáze pro entitu zařadí dotaz s danými hodnotami primárního klíče a tato entita, pokud je nalezena, je připojena k kontextu a vrácena. Pokud není nalezena žádná entita, vrátí se hodnota null.

Entity Framework Core nepodporuje spuštění více paralelních operací ve stejné instanci DbContext. To zahrnuje jak paralelní spouštění asynchronních dotazů, tak jakékoli explicitní souběžné použití z více vláken. Proto vždy ihned čekejte na asynchronní volání nebo použijte samostatné instance DbContext pro operace, které se spouští paralelně. Další informace najdete v tématu Předcházení problémům s threadingem DbContext.

FindAsync<TEntity>(Object[], CancellationToken)

Vyhledá entitu s danými hodnotami primárního klíče. Pokud kontext sleduje entitu s danými hodnotami primárního klíče, vrátí se okamžitě bez provedení požadavku na databázi. V opačném případě se do databáze pro entitu zařadí dotaz s danými hodnotami primárního klíče a tato entita, pokud je nalezena, je připojena k kontextu a vrácena. Pokud není nalezena žádná entita, vrátí se hodnota null.

Entity Framework Core nepodporuje spuštění více paralelních operací ve stejné instanci DbContext. To zahrnuje jak paralelní spouštění asynchronních dotazů, tak jakékoli explicitní souběžné použití z více vláken. Proto vždy ihned čekejte na asynchronní volání nebo použijte samostatné instance DbContext pro operace, které se spouští paralelně. Další informace najdete v tématu Předcházení problémům s threadingem DbContext.

FromExpression<TResult>(Expression<Func<IQueryable<TResult>>>)

Vytvoří dotazovatelný pro daný výraz dotazu.

OnConfiguring(DbContextOptionsBuilder)

Tuto metodu přepište, pokud chcete nakonfigurovat databázi (a další možnosti), která se má použít pro tento kontext. Tato metoda je volána pro každou instanci vytvořeného kontextu. Základní implementace neprovádí žádnou akci.

V situacích, kdy se instance DbContextOptions může nebo nemusí předávat konstruktoru, můžete použít IsConfigured k určení, zda byly možnosti již nastaveny a přeskočit některé nebo všechny logiky v OnConfiguring(DbContextOptionsBuilder) .

OnModelCreating(ModelBuilder)

Tuto metodu přepište, pokud chcete dále konfigurovat model, který byl zjištěn podle konvence z typů entit zveřejněných ve DbSet<TEntity> vlastnostech odvozeného kontextu. Výsledný model může být uložen do mezipaměti a znovu použit pro další instance odvozeného kontextu.

Query<TQuery>()
Zastaralé.

Vytvoří objekt DbSet<TEntity> , který lze použít pro dotazování instancí TQuery .

Remove(Object)

Začne sledovat danou entitu ve Deleted stavu tak, že bude při volání z databáze odebrána SaveChanges() .

Remove<TEntity>(TEntity)

Začne sledovat danou entitu ve Deleted stavu tak, že bude při volání z databáze odebrána SaveChanges() .

RemoveRange(IEnumerable<Object>)

Začne sledovat danou entitu ve Deleted stavu tak, že bude při volání z databáze odebrána SaveChanges() .

RemoveRange(Object[])

Začne sledovat danou entitu ve Deleted stavu tak, že bude při volání z databáze odebrána SaveChanges() .

SaveChanges()

Uloží všechny změny provedené v tomto kontextu do databáze.

Tato metoda automaticky DetectChanges() před uložením do podkladové databáze zavolá, aby zjistila všechny změny instancí entit. Tuto možnost lze zakázat prostřednictvím AutoDetectChangesEnabled .

Entity Framework Core nepodporuje spouštění více paralelních operací na stejné instanci DbContext. To zahrnuje paralelní spuštění asynchronních dotazů a jakékoli explicitní souběžné použití z více vláken. Proto vždy čekají na asynchronní volání nebo použijte samostatné instance DbContext pro operace, které se spouštějí paralelně. Další informace najdete v tématu předcházení problémům s vlákny DbContext .

SaveChanges(Boolean)

Uloží všechny změny provedené v tomto kontextu do databáze.

Tato metoda automaticky DetectChanges() před uložením do podkladové databáze zavolá, aby zjistila všechny změny instancí entit. Tuto možnost lze zakázat prostřednictvím AutoDetectChangesEnabled .

Entity Framework Core nepodporuje spouštění více paralelních operací na stejné instanci DbContext. To zahrnuje paralelní spuštění asynchronních dotazů a jakékoli explicitní souběžné použití z více vláken. Proto vždy čekají na asynchronní volání nebo použijte samostatné instance DbContext pro operace, které se spouštějí paralelně. Další informace najdete v tématu předcházení problémům s vlákny DbContext .

SaveChangesAsync(Boolean, CancellationToken)

Uloží všechny změny provedené v tomto kontextu do databáze.

Tato metoda se před uložením do podkladové databáze automaticky zavolá, aby se zjistily všechny změny DetectChanges() instancí entit. Tento přístup je možné zakázat prostřednictvím AutoDetectChangesEnabled .

Entity Framework Core nepodporuje spuštění více paralelních operací ve stejné instanci DbContext. To zahrnuje jak paralelní spouštění asynchronních dotazů, tak jakékoli explicitní souběžné použití z více vláken. Proto vždy ihned čekejte na asynchronní volání nebo použijte samostatné instance DbContext pro operace, které se spouští paralelně. Další informace najdete v tématu Předcházení problémům s threadingem DbContext.

SaveChangesAsync(CancellationToken)

Uloží všechny změny provedené v tomto kontextu do databáze.

Tato metoda automaticky DetectChanges() před uložením do podkladové databáze zavolá, aby zjistila všechny změny instancí entit. Tuto možnost lze zakázat prostřednictvím AutoDetectChangesEnabled .

Entity Framework Core nepodporuje spouštění více paralelních operací na stejné instanci DbContext. To zahrnuje jak paralelní spouštění asynchronních dotazů, tak jakékoli explicitní souběžné použití z více vláken. Proto vždy ihned čekejte na asynchronní volání nebo použijte samostatné instance DbContext pro operace, které se spouští paralelně. Další informace najdete v tématu Předcházení problémům s threadingem DbContext.

Set<TEntity>()

Vytvoří DbSet<TEntity> objekt , který lze použít k dotazování a ukládání instancí TEntity .

Entity Framework Core nepodporuje spuštění více paralelních operací ve stejné instanci DbContext. To zahrnuje jak paralelní spouštění asynchronních dotazů, tak jakékoli explicitní souběžné použití z více vláken. Proto vždy ihned čekejte na asynchronní volání nebo použijte samostatné instance DbContext pro operace, které se spouští paralelně. Další informace najdete v tématu Předcházení problémům s threadingem DbContext.

Set<TEntity>(String)

Vytvoří DbSet<TEntity> pro typ entity sdíleného typu, který lze použít k dotazování a ukládání instancí TEntity .

Typy entit sdíleného typu se obvykle používají pro entitu spojení v relacích M:N.

Update(Object)

Začne sledovat danou entitu a položky dosažitelné z dané entity pomocí stavu ve výchozím nastavení, ale níže se podívejte na případy, kdy se použije Modified jiný stav.

Obecně platí, že dokud se nezavolána, neprovádí se SaveChanges() žádná interakce s databází.

Provede se rekurzivní vyhledávání vlastností navigace, aby se zjistily dosažitelné entity, které kontext ještě nesleduje. Všechny nalezené entity budou sledovány kontextem.

U typů entit s generovanými klíči, pokud má entita nastavenou hodnotu primárního klíče, bude sledována ve Modified stavu . Pokud není hodnota primárního klíče nastavená, bude sledována ve Added stavu . To pomáhá zajistit vložení nových entit, zatímco existující entity se aktualizují. Entita je považována za nastavenou hodnotu svého primárního klíče, pokud je vlastnost primárního klíče nastavena na cokoli jiného, než je výchozí hodnota CLR pro typ vlastnosti.

U typů entit bez vygenerované klíče je stavová sada vždy Modified .

Slouží State k nastavení stavu pouze jedné entity.

Update<TEntity>(TEntity)

Začne sledovat danou entitu a položky dosažitelné z dané entity pomocí stavu ve výchozím nastavení, ale níže se podívejte na případy, kdy se použije Modified jiný stav.

Obecně platí, že dokud se nezavolána, neprovádí se SaveChanges() žádná interakce s databází.

Provede se rekurzivní vyhledávání vlastností navigace, aby se zjistily dosažitelné entity, které kontext ještě nesleduje. Všechny nalezené entity budou sledovány kontextem.

U typů entit s generovanými klíči, pokud má entita nastavenou hodnotu primárního klíče, bude sledována ve Modified stavu . Pokud není hodnota primárního klíče nastavená, bude sledována ve Added stavu . To pomáhá zajistit vložení nových entit, zatímco existující entity se aktualizují. Entita je považována za nastavenou hodnotu svého primárního klíče, pokud je vlastnost primárního klíče nastavena na cokoli jiného, než je výchozí hodnota CLR pro typ vlastnosti.

U typů entit bez vygenerované klíče je stavová sada vždy Modified .

Slouží State k nastavení stavu pouze jedné entity.

UpdateRange(IEnumerable<Object>)

Začne ve výchozím nastavení sledovat dané entity a položky, ke které jsou z těchto entit ve výchozím nastavení dosažitelné, ale níže se podívejte na případy, kdy se Modified použije jiný stav.

Obecně platí, že dokud se nezavolána, neprovádí se SaveChanges() žádná interakce s databází.

Provede se rekurzivní vyhledávání vlastností navigace, aby se zjistily dosažitelné entity, které kontext ještě nesleduje. Všechny nalezené entity budou sledovány kontextem.

U typů entit s generovanými klíči, pokud má entita nastavenou hodnotu primárního klíče, bude sledována ve Modified stavu . Pokud není hodnota primárního klíče nastavená, bude sledována ve Added stavu . To pomáhá zajistit vložení nových entit, zatímco existující entity se aktualizují. Entita je považována za nastavenou hodnotu svého primárního klíče, pokud je vlastnost primárního klíče nastavena na cokoli jiného, než je výchozí hodnota CLR pro typ vlastnosti.

U typů entit bez vygenerované klíče je stavová sada vždy Modified .

Slouží State k nastavení stavu pouze jedné entity.

UpdateRange(Object[])

Začne ve výchozím nastavení sledovat dané entity a položky, ke které jsou z těchto entit ve výchozím nastavení dosažitelné, ale níže se podívejte na případy, kdy se Modified použije jiný stav.

Obecně platí, že dokud se nezavolána, neprovádí se SaveChanges() žádná interakce s databází.

Provede se rekurzivní vyhledávání vlastností navigace, aby se zjistily dosažitelné entity, které kontext ještě nesleduje. Všechny nalezené entity budou sledovány kontextem.

U typů entit s generovanými klíči, pokud má entita nastavenou hodnotu primárního klíče, bude sledována ve Modified stavu . Pokud není hodnota primárního klíče nastavená, bude sledována ve Added stavu . To pomáhá zajistit vložení nových entit, zatímco existující entity se aktualizují. Entita je považována za nastavenou hodnotu svého primárního klíče, pokud je vlastnost primárního klíče nastavena na cokoli jiného, než je výchozí hodnota CLR pro typ vlastnosti.

U typů entit bez generovaných klíčů je stavová sada vždy Modified .

Slouží State k nastavení stavu pouze jedné entity.

událost

SaveChangesFailed

Událost se aktivuje, pokud dojde k SaveChanges volání metody nebo k selhání s SaveChangesAsync výjimkou.

SavedChanges

Událost aktivovat na konci volání SaveChanges nebo SaveChangesAsync

SavingChanges

Událost aktivovat na začátku volání SaveChanges nebo SaveChangesAsync

Explicitní implementace rozhraní

IDbContextDependencies.ChangeDetector

Jedná se o interní rozhraní API, které podporuje Entity Framework Core infrastruktury a neschová se stejnými standardy kompatibility jako veřejná rozhraní API. Můžete ho změnit nebo odebrat bez předchozího upozornění v jakékoli verzi. Měli byste ji používat přímo v kódu s extrémní opatrností a vědět, že to může vést k selháním aplikace při aktualizaci na novou Entity Framework Core verzi.

IDbContextDependencies.EntityFinderFactory

Jedná se o interní rozhraní API, které podporuje Entity Framework Core infrastruktury a neschová se stejnými standardy kompatibility jako veřejná rozhraní API. Můžete ho změnit nebo odebrat bez předchozího upozornění v jakékoli verzi. Měli byste ji používat přímo v kódu s extrémní opatrností a vědět, že to může vést k selháním aplikace při aktualizaci na novou Entity Framework Core verzi.

IDbContextDependencies.EntityFinderSource

Toto rozhraní API Entity Framework Core infrastrukturu a není určené k použití přímo z vašeho kódu. Toto rozhraní API se může v budoucích verzích změnit nebo odebrat.

IDbContextDependencies.EntityGraphAttacher

Jedná se o interní rozhraní API, které podporuje Entity Framework Core infrastruktury a neschová se stejnými standardy kompatibility jako veřejná rozhraní API. Můžete ho změnit nebo odebrat bez předchozího upozornění v jakékoli verzi. Měli byste ji používat přímo v kódu s extrémní opatrností a vědět, že to může vést k selháním aplikace při aktualizaci na novou Entity Framework Core verzi.

IDbContextDependencies.InfrastructureLogger

Jedná se o interní rozhraní API, které podporuje Entity Framework Core infrastruktury a neschová se stejnými standardy kompatibility jako veřejná rozhraní API. Můžete ho změnit nebo odebrat bez předchozího upozornění v jakékoli verzi. Měli byste ji používat přímo v kódu s extrémní opatrností a vědět, že to může vést k selháním aplikace při aktualizaci na novou Entity Framework Core verzi.

IDbContextDependencies.QueryProvider

Jedná se o interní rozhraní API, které podporuje Entity Framework Core infrastruktury a neschová se stejnými standardy kompatibility jako veřejná rozhraní API. Můžete ho změnit nebo odebrat bez předchozího upozornění v jakékoli verzi. Měli byste ji používat přímo v kódu s extrémní opatrností a vědět, že to může vést k selháním aplikace při aktualizaci na novou Entity Framework Core verzi.

IDbContextDependencies.QuerySource

Toto rozhraní API Entity Framework Core infrastrukturu a není určené k použití přímo z vašeho kódu. Toto rozhraní API se může v budoucích verzích změnit nebo odebrat.

IDbContextDependencies.SetSource

Jedná se o interní rozhraní API, které podporuje Entity Framework Core infrastruktury a neschová se stejnými standardy kompatibility jako veřejná rozhraní API. Můžete ho změnit nebo odebrat bez předchozího upozornění v jakékoli verzi. Měli byste ji používat přímo v kódu s extrémní opatrností a vědět, že to může vést k selháním aplikace při aktualizaci na novou Entity Framework Core verzi.

IDbContextDependencies.StateManager

Jedná se o interní rozhraní API, které podporuje Entity Framework Core infrastruktury a neschová se stejnými standardy kompatibility jako veřejná rozhraní API. Můžete ho změnit nebo odebrat bez předchozího upozornění v jakékoli verzi. Měli byste ji používat přímo v kódu s extrémní opatrností a vědět, že to může vést k selháním aplikace při aktualizaci na novou Entity Framework Core verzi.

IDbContextDependencies.UpdateLogger

Jedná se o interní rozhraní API, které podporuje Entity Framework Core infrastruktury a neschová se stejnými standardy kompatibility jako veřejná rozhraní API. Můžete ho změnit nebo odebrat bez předchozího upozornění v jakékoli verzi. Měli byste ji používat přímo v kódu s extrémní opatrností a vědět, že to může vést k selháním aplikace při aktualizaci na novou Entity Framework Core verzi.

IDbContextPoolable.ClearLease()

Jedná se o interní rozhraní API, které podporuje Entity Framework Core infrastruktury a neschová se stejnými standardy kompatibility jako veřejná rozhraní API. Můžete ho změnit nebo odebrat bez předchozího upozornění v jakékoli verzi. Měli byste ji používat přímo v kódu s extrémní opatrností a vědět, že to může vést k selháním aplikace při aktualizaci na novou Entity Framework Core verzi.

IDbContextPoolable.ResetState()
IDbContextPoolable.Resurrect(DbContextPoolConfigurationSnapshot)

Jedná se o interní rozhraní API, které podporuje Entity Framework Core infrastruktury a neschová se stejnými standardy kompatibility jako veřejná rozhraní API. Můžete ho změnit nebo odebrat bez předchozího upozornění v jakékoli verzi. Měli byste ji používat přímo v kódu s extrémní opatrností a vědět, že to může vést k selháním aplikace při aktualizaci na novou Entity Framework Core verzi.

IDbContextPoolable.SetLease(DbContextLease)

Jedná se o interní rozhraní API, které podporuje Entity Framework Core infrastruktury a neschová se stejnými standardy kompatibility jako veřejná rozhraní API. Můžete ho změnit nebo odebrat bez předchozího upozornění v jakékoli verzi. Měli byste ho použít jenom přímo v kódu s mimořádnou opatrností a s vědomím, že to může způsobit selhání aplikace při aktualizaci na novou Entity Framework Core verzi.

IDbContextPoolable.SetLeaseAsync(DbContextLease, CancellationToken)

Toto je interní rozhraní API, které podporuje infrastrukturu Entity Framework Core a nepodléhá stejným standardům kompatibility jako veřejná rozhraní API. Dá se změnit nebo odebrat bez upozornění v jakékoli vydané verzi. Měli byste ho použít jenom přímo v kódu s mimořádnou opatrností a s vědomím, že to může způsobit selhání aplikace při aktualizaci na novou Entity Framework Core verzi.

IDbContextPoolable.SetPool(IDbContextPool)

Toto je interní rozhraní API, které podporuje infrastrukturu Entity Framework Core a nepodléhá stejným standardům kompatibility jako veřejná rozhraní API. Dá se změnit nebo odebrat bez upozornění v jakékoli vydané verzi. Měli byste ho použít jenom přímo v kódu s mimořádnou opatrností a s vědomím, že to může způsobit selhání aplikace při aktualizaci na novou Entity Framework Core verzi.

IDbContextPoolable.SnapshotConfiguration()

Toto je interní rozhraní API, které podporuje infrastrukturu Entity Framework Core a nepodléhá stejným standardům kompatibility jako veřejná rozhraní API. Dá se změnit nebo odebrat bez upozornění v jakékoli vydané verzi. Měli byste ho použít jenom přímo v kódu s mimořádnou opatrností a s vědomím, že to může způsobit selhání aplikace při aktualizaci na novou Entity Framework Core verzi.

IDbQueryCache.GetOrAddQuery(IDbQuerySource, Type)

Toto rozhraní API podporuje infrastrukturu Entity Framework Core a není určeno pro použití přímo v kódu. Toto rozhraní API se může v budoucích verzích změnit nebo odebrat.

IDbSetCache.GetOrAddSet(IDbSetSource, String, Type)

Toto je interní rozhraní API, které podporuje infrastrukturu Entity Framework Core a nepodléhá stejným standardům kompatibility jako veřejná rozhraní API. Dá se změnit nebo odebrat bez upozornění v jakékoli vydané verzi. Měli byste ho použít jenom přímo v kódu s mimořádnou opatrností a s vědomím, že to může způsobit selhání aplikace při aktualizaci na novou Entity Framework Core verzi.

IDbSetCache.GetOrAddSet(IDbSetSource, Type)

Toto je interní rozhraní API, které podporuje infrastrukturu Entity Framework Core a nepodléhá stejným standardům kompatibility jako veřejná rozhraní API. Dá se změnit nebo odebrat bez upozornění v jakékoli vydané verzi. Měli byste ho použít jenom přímo v kódu s mimořádnou opatrností a s vědomím, že to může způsobit selhání aplikace při aktualizaci na novou Entity Framework Core verzi.

IInfrastructure<IServiceProvider>.Instance

Získá obor používaný IServiceProvider k překladu služeb.

Tato vlastnost je určená k použití rozšiřujícími metodami, které potřebují využívat služby, které nejsou přímo zveřejněné na veřejné ploše rozhraní API.

IResettableService.ResetState()

Jedná se o interní rozhraní API, které podporuje Entity Framework Core infrastruktury a neschová se stejnými standardy kompatibility jako veřejná rozhraní API. Můžete ho změnit nebo odebrat bez předchozího upozornění v jakékoli verzi. Měli byste ji používat přímo v kódu s extrémní opatrností a vědět, že to může vést k selháním aplikace při aktualizaci na novou Entity Framework Core verzi.

IResettableService.ResetStateAsync(CancellationToken)

Jedná se o interní rozhraní API, které podporuje Entity Framework Core infrastruktury a neschová se stejnými standardy kompatibility jako veřejná rozhraní API. Můžete ho změnit nebo odebrat bez předchozího upozornění v jakékoli verzi. Měli byste ji používat přímo v kódu s extrémní opatrností a vědět, že to může vést k selháním aplikace při aktualizaci na novou Entity Framework Core verzi.

Metody rozšíření

GetInfrastructure<T>(IInfrastructure<T>)

Získá hodnotu z vlastnosti, která je skrytá, pomocí IInfrastructure<T> .

Tuto metodu obvykle používají poskytovatelé databází (a další rozšíření). Obvykle se v kódu aplikace nevyuží.

IInfrastructure<T> slouží ke skrytí vlastností, které nejsou určené k použití v kódu aplikace, ale mohou být použity v rozšiřujících metodách napsaných poskytovateli databáze atd.

CreateProxy(DbContext, Type, Object[])

Pokud je zapnuté vytváření proxy serveru, vytvoří instanci proxy serveru pro typ entity.

CreateProxy<TEntity>(DbContext, Action<TEntity>, Object[])

Pokud je zapnuté vytváření proxy serveru, vytvoří instanci proxy serveru pro typ entity.

CreateProxy<TEntity>(DbContext, Object[])

Pokud je zapnuté vytváření proxy serveru, vytvoří instanci proxy serveru pro typ entity.

Platí pro