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 | |
---|---|---|
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. | |
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. | |
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. | |
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. | |
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. | |
DbContext(ObjectContext, Boolean) | Erstellt eine neue Kontextinstanz um einen vorhandenen ObjectContext. | |
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 | |
---|---|---|
ChangeTracker | Bietet Zugriff auf Funktionen des Kontexts, die Änderungsnachverfolgung von Entitäten behandeln. | |
Configuration | Bietet Zugriff auf Konfigurationsoptionen für den Kontext. | |
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 | |
---|---|---|
Dispose() | Ruft die geschützte Dispose-Methode auf. | |
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. | |
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. | |
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. | |
Equals | Ermittelt, ob der angegebene DbContext gleich dem aktuellen DbContext ist. (Überschreibt Object.Equals(Object).) | |
Finalize | (Von Object geerbt.) | |
GetHashCode | Gibt die Hashfunktion für diesen DbContext zurück. (Überschreibt Object.GetHashCode().) | |
GetType | Gibt den Typ des aktuellen DbContext zurück. | |
GetValidationErrors | Überprüft nachverfolgte Entitäten und gibt eine Auflistung von DbEntityValidationResult zurück, die Validierungsergebnisse enthält. | |
MemberwiseClone | (Von Object geerbt.) | |
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. | |
SaveChanges | Speichert alle in diesem Kontext vorgenommenen Änderungen in der zugrunde liegenden Datenbank. | |
SaveChangesAsync() | Speichert asynchron alle in diesem Kontext vorgenommenen Änderungen in der zugrunde liegenden Datenbank. | |
SaveChangesAsync(CancellationToken) | Speichert asynchron alle in diesem Kontext vorgenommenen Änderungen in der zugrunde liegenden Datenbank. | |
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. | |
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. | |
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. | |
ToString | Gibt die Zeichenfolgendarstellung des DbContext zurück. (Überschreibt Object.ToString().) | |
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 | |
---|---|---|
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.