Freigeben über


DbContext-Klasse

[Diese Seite bezieht sich auf Entity Framework Version 6. Die neueste Version ist als 'Entity Framework' NuGet-Paket verfügbar. Weitere Informationen zu Entity Framework finden Sie unter msdn.com/data/ef.]

Eine DbContext-Instanz stellt eine Kombination des Arbeitseinheitsmusters und des Repositorymusters dar, die zum Abfragen einer Datenbank und Gruppieren von Änderungen verwendet werden kann, die dann als Einheit in den Speicher zurückgeschrieben werden. DbContext gleicht konzeptionell ObjectContext.

Vererbungshierarchie

System.Object
  System.Data.Entity.DbContext
    System.Data.Entity.Infrastructure.TransactionContext
    System.Data.Entity.Migrations.History.HistoryContext

Namespace:  System.Data.Entity
Assembly:  EntityFramework (in EntityFramework.dll)

Syntax

'Declaration
Public Class DbContext _
    Implements IDisposable, IObjectContextAdapter
'Usage
Dim instance As DbContext
public class DbContext : IDisposable, IObjectContextAdapter
public ref class DbContext : IDisposable, 
    IObjectContextAdapter
type DbContext =  
    class 
        interface IDisposable 
        interface IObjectContextAdapter 
    end
public class DbContext implements IDisposable, IObjectContextAdapter

Der DbContext-Typ macht die folgenden Member verfügbar.

Konstruktoren

  Name Beschreibung
Geschützte Methode DbContext() Erstellt eine neue Kontextinstanz unter Verwendung der Konventionen zum Erstellen des Namens der Datenbank, mit der eine Verbindung hergestellt wird.Konventionsgemäß ist der Name der vollständige Name (Namespacename + Klassenname) der abgeleiteten Kontextklasse.Siehe Klassenhinweise zur Erstellung einer Verbindung.
Öffentliche Methode DbContext(String) Erstellt eine neue Kontextinstanz mit der angegebenen Zeichenfolge als Name oder Verbindungszeichenfolge für die Datenbank, mit der eine Verbindung hergestellt wird.Siehe Klassenhinweise zur Erstellung einer Verbindung.
Geschützte Methode DbContext(DbCompiledModel) Erstellt mit Konventionen zum Erstellen des Namens der Datenbank, mit der eine Verbindung hergestellt wird, eine neue Kontextinstanz und initialisiert sie anhand des angegebenen Modells.Konventionsgemäß ist der Name der vollständige Name (Namespacename + Klassenname) der abgeleiteten Kontextklasse.Siehe Klassenhinweise zur Erstellung einer Verbindung.
Öffentliche Methode DbContext(DbConnection, Boolean) Erstellt eine neue Kontextinstanz mithilfe der vorhandenen Verbindung zum Herstellen einer Verbindung mit einer Datenbank.Die Verbindung wird nicht verworfen, wenn der Kontext verworfen wird, wenn contextOwnsConnection den Wert false aufweist.
Öffentliche Methode DbContext(String, DbCompiledModel) Erstellt mit der angegebenen Zeichenfolge als Name oder Verbindungszeichenfolge für die Datenbank, mit der eine Verbindung hergestellt wird, eine neue Kontextinstanz und initialisiert sie anhand des angegebenen Modells.Siehe Klassenhinweise zur Erstellung einer Verbindung.
Öffentliche Methode DbContext(ObjectContext, Boolean) Erstellt eine neue Kontextinstanz um einen vorhandenen ObjectContext.
Öffentliche Methode DbContext(DbConnection, DbCompiledModel, Boolean) Erstellt mithilfe der vorhandenen Verbindung zum Herstellen einer Verbindung mit einer Datenbank eine neue Kontextinstanz und initialisiert sie anhand des angegebenen Modells.Die Verbindung wird nicht verworfen, wenn der Kontext verworfen wird, wenn contextOwnsConnection den Wert false aufweist.

Oben

Eigenschaften

  Name Beschreibung
Öffentliche Eigenschaft ChangeTracker Bietet Zugriff auf Funktionen des Kontexts, die Änderungsnachverfolgung von Entitäten behandeln.
Öffentliche Eigenschaft Configuration Bietet Zugriff auf Konfigurationsoptionen für den Kontext.
Öffentliche Eigenschaft Database Erstellt eine Datenbankinstanz für diesen Kontext, die Ihnen ermöglicht, die zugrunde liegende Datenbank auf Erstellung, Löschen oder Vorhandensein zu überprüfen.

Oben

Methoden

  Name Beschreibung
Öffentliche Methode Dispose() Ruft die geschützte Dispose-Methode auf.
Geschützte Methode Dispose(Boolean) Verwirft den Kontext.Der zugrunde liegende ObjectContext wird auch verworfen, wenn er von diesem Kontext erstellt wurde oder wenn der Besitz beim Erstellen dieses Kontexts an diesen Kontext übergeben wurde.Die Verbindung mit der Datenbank (DbConnection-Objekt) wird auch verworfen, wenn sie von diesem Kontext erstellt wurde oder wenn der Besitz beim Erstellen dieses Kontexts an diesen Kontext übergeben wurde.
Öffentliche Methode Entry(Object) Ruft ein DbEntityEntry-Objekt für die angegebene Entität ab, um Zugriff auf Informationen zur Entität und die Fähigkeit zum Ausführen von Aktionen für die Entität bereitzustellen.
Öffentliche Methode Entry<TEntity>(TEntity) Ruft ein DbEntityEntry<TEntity>-Objekt für die angegebene Entität ab, um Zugriff auf Informationen zur Entität und die Fähigkeit zum Ausführen von Aktionen für die Entität bereitzustellen.
Öffentliche Methode Equals Ermittelt, ob der angegebene DbContext gleich dem aktuellen DbContext ist. (Überschreibt Object.Equals(Object).)
Geschützte Methode Finalize (Von Object geerbt.)
Öffentliche Methode GetHashCode Gibt die Hashfunktion für diesen DbContext zurück. (Überschreibt Object.GetHashCode().)
Öffentliche Methode GetType Gibt den Typ des aktuellen DbContext zurück.
Öffentliche Methode GetValidationErrors Überprüft nachverfolgte Entitäten und gibt eine Auflistung von DbEntityValidationResult zurück, die Validierungsergebnisse enthält.
Geschützte Methode MemberwiseClone (Von Object geerbt.)
Geschützte Methode OnModelCreating Diese Methode wird aufgerufen, wenn das Modell für einen abgeleiteten Kontext initialisiert wurde, jedoch bevor das Modell gesperrt und zum Initialisieren des Kontexts verwendet wurde.Die Standardimplementierung dieser Methode führt keine Aktion aus. Sie kann jedoch in einer abgeleiteten Klasse überschrieben werden, damit das Modell weiter konfiguriert werden kann, bevor es gesperrt wird.
Öffentliche Methode SaveChanges Speichert alle in diesem Kontext vorgenommenen Änderungen in der zugrunde liegenden Datenbank.
Öffentliche Methode SaveChangesAsync() Speichert asynchron alle in diesem Kontext vorgenommenen Änderungen in der zugrunde liegenden Datenbank.
Öffentliche Methode SaveChangesAsync(CancellationToken) Speichert asynchron alle in diesem Kontext vorgenommenen Änderungen in der zugrunde liegenden Datenbank.
Öffentliche Methode Set(Type) Gibt eine nicht generische DbSet-Instanz für den Zugriff auf Entitäten des angegebenen Typs im Kontext und den zugrunde liegenden Speicher zurück.
Öffentliche Methode Set<TEntity>() Gibt eine DbSet<TEntity>-Instanz für den Zugriff auf Entitäten des angegebenen Typs im Kontext und den zugrunde liegenden Speicher zurück.
Geschützte Methode ShouldValidateEntity Erweiterungspunkt, der es dem Benutzer ermöglicht, das Standardverhalten, mit dem nur Entitäten mit dem Status "Added" und "Modified" überprüft werden, zu überschreiben.
Öffentliche Methode ToString Gibt die Zeichenfolgendarstellung des DbContext zurück. (Überschreibt Object.ToString().)
Geschützte Methode ValidateEntity Erweiterungspunkt, der es dem Benutzer ermöglicht, die Validierung einer Entität anzupassen oder Validierungsergebnisse herauszufiltern.Wird von GetValidationErrors() aufgerufen.

Oben

Explizite Schnittstellen implementierungen

  Name Beschreibung
Explizite SchnittstellenimplementierungPrivate Eigenschaft IObjectContextAdapter.ObjectContext Gibt den Entity Framework-ObjectContext zurück, der diesem Kontext zugrunde liegt.

Oben

Hinweise

DbContext wird normalerweise mit einem abgeleiteten Typ verwendet, der DbSet<TEntity>-Eigenschaften für die Stammentitäten des Modells enthält. Diese Sätze werden automatisch initialisiert, wenn die Instanz der abgeleiteten Klasse erstellt wird. Dieses Verhalten kann geändert werden, indem das SuppressDbSetInitializationAttribute-Attribut auf die gesamte abgeleitete Kontextklasse oder auf einzelne Eigenschaften in der Klasse angewendet wird. Das Entity Data Model, das den Kontext unterstützt, kann auf unterschiedliche Weise angegeben werden. Bei Verwendung des Code First-Ansatzes werden die DbSet<TEntity>-Eigenschaften im abgeleiteten Kontext verwendet, um ein Modell gemäß Konvention zu erstellen. Die geschützte OnModelCreating-Methode kann überschrieben werden, um dieses Modell zu optimieren. Eine präzisere Steuerung des Modells, die für den Model First-Ansatz verwendet wird, kann durch das explizite Erstellen eines DbCompiledModel aus einem DbModelBuilder und Übergeben dieses Modells an einen der DbContext-Konstruktoren erreicht werden. Bei Verwendung des Database First- oder Model First-Ansatzes kann das Entity Data Model mit dem Entity Designer (oder manuell durch Erstellen einer EDMX-Datei) erstellt werden, und anschließend kann dieses Modell mit einer Entitätsverbindungszeichenfolge oder einem EntityConnection-Objekt angegeben werden. Die Verbindung mit der Datenbank (einschließlich des Namens der Datenbank) kann auf unterschiedliche Weise angegeben werden. Bei Aufruf des parameterlosen DbContext-Konstruktors aus einem abgeleiteten Kontext wird der Name des abgeleiteten Kontexts verwendet, um in der Datei app.config oder web.config eine Verbindungszeichenfolge zu suchen. Wenn keine Verbindungszeichenfolge gefunden wird, wird der Name an die DefaultConnectionFactory übergeben, die bei der Database-Klasse registriert ist. Die Verbindungsfactory verwendet dann den Kontextnamen als Datenbanknamen in einer Standardverbindungszeichenfolge. (Diese Standardverbindungszeichenfolge zeigt auf dem lokalen Computer auf . \SQLEXPRESS, sofern keine andere DefaultConnectionFactory registriert ist.) Statt den abgeleiteten Kontextnamen zu verwenden, kann der Verbindungs-/Datenbankname auch explizit durch Übergeben des Namens an einen der DbContext-Konstruktoren, die eine Zeichenfolge akzeptieren, angegeben werden. Der Name kann auch im Format "name=meinname" übergeben werden. In diesem Fall muss der Name in der Konfigurationsdatei vorhanden sein, andernfalls wird eine Ausnahme ausgelöst. Beachten Sie, dass die in der Datei app.config oder web.config vorhandene Verbindung eine normale Datenbankverbindungszeichenfolge sein kann (nicht eine spezielle Entity Framework-Verbindungszeichenfolge). In diesem Fall verwendet der DbContext Code First. Wenn die in der Konfigurationsdatei vorhandene Verbindung jedoch eine spezielle Entity Framework-Verbindungszeichenfolge ist, verwendet der DbContext Database First/Model First, und das in der Verbindungszeichenfolge angegebene Modell wird verwendet. Statt des Datenbank-/Verbindungsnamens kann auch eine vorhandene oder explizit erstellte DbConnection verwendet werden. Ein DbModelBuilderVersionAttribute kann auf eine von DbContext abgeleitete Klasse angewendet werden, um die Version von Konventionen festzulegen, die vom Kontext beim Erstellen eines Modells verwendet wird. Wenn kein Attribut angewendet wird, wird die neueste Version von Konventionen verwendet.

Threadsicherheit

Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Siehe auch

Verweis

System.Data.Entity-Namespace