Classe DbContext
[Questa pagina è specifica della versione 6 di Entity Framework. La versione più recente è disponibile come pacchetto NuGet per "Entity Framework". Per ulteriori informazioni su Entity Framework, vedere la pagina msdn.com/data/ef.]
Un'istanza di DbContext rappresenta una combinazione dei pattern Unità di lavoro e Repository in modo che possa essere utilizzata per eseguire query da un database e raggruppare le modifiche che verranno scritte nell'archivio come unità. DbContext è concettualmente simile a ObjectContext.
Gerarchia di ereditarietà
System.Object
System.Data.Entity.DbContext
System.Data.Entity.Infrastructure.TransactionContext
System.Data.Entity.Migrations.History.HistoryContext
Spazio dei nomi: System.Data.Entity
Assembly: EntityFramework (in EntityFramework.dll)
Sintassi
'Dichiarazione
Public Class DbContext _
Implements IDisposable, IObjectContextAdapter
'Utilizzo
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
Il tipo DbContext espone i seguenti membri.
Costruttori
rapporti | Descrizione | |
---|---|---|
DbContext() | Costruisce una nuova istanza del contesto utilizzando le convenzioni per creare il nome del database al quale verrà effettuata una connessione.Per convenzione, il nome è costituito dal nome completo (spazio dei nomi + nome della classe) della classe del contesto derivato.Vedere la sezione osservazioni sulle classi per informazioni su come utilizzarle per creare una connessione. | |
DbContext(String) | Costruisce una nuova istanza del contesto utilizzando la stringa specificata come nome o stringa di connessione per il database al quale verrà effettuata una connessione.Vedere la sezione osservazioni sulle classi per informazioni su come utilizzarle per creare una connessione. | |
DbContext(DbCompiledModel) | Costruisce una nuova istanza del contesto utilizzando le convenzioni per creare il nome del database al quale verrà effettuata una connessione e la inizializza dal modello specificato.Per convenzione, il nome è costituito dal nome completo (spazio dei nomi + nome della classe) della classe del contesto derivato.Vedere la sezione osservazioni sulle classi per informazioni su come utilizzarle per creare una connessione. | |
DbContext(DbConnection, Boolean) | Costruisce una nuova istanza del contesto utilizzando la connessione esistente per connettersi a un database.La connessione non verrà eliminata con l'eliminazione del contesto se contextOwnsConnection è false. | |
DbContext(String, DbCompiledModel) | Costruisce una nuova istanza del contesto utilizzando la stringa specificata come nome o stringa di connessione per il database al quale verrà effettuata una connessione e la inizializza dal modello specificato.Vedere la sezione osservazioni sulle classi per informazioni su come utilizzarle per creare una connessione. | |
DbContext(ObjectContext, Boolean) | Costruisce una nuova istanza del contesto intorno a un oggetto ObjectContext esistente. | |
DbContext(DbConnection, DbCompiledModel, Boolean) | Costruisce una nuova istanza del contesto utilizzando la connessione esistente per connettersi a un database e la inizializza dal modello specificato.La connessione non verrà eliminata con l'eliminazione del contesto se contextOwnsConnection è false. |
In alto
Proprietà
rapporti | Descrizione | |
---|---|---|
ChangeTracker | Fornisce l'accesso alle funzionalità del contesto che gestiscono il rilevamento delle modifiche delle entità. | |
Configuration | Fornisce l'accesso alle opzioni di configurazione del contesto. | |
Database | Crea un'istanza del database per questo contesto che consente i controlli di creazione, eliminazione e presenza per il database sottostante. |
In alto
Metodi
rapporti | Descrizione | |
---|---|---|
Dispose() | Chiama il metodo Dispose protetto. | |
Dispose(Boolean) | Elimina il contesto.Viene eliminato anche l'oggetto ObjectContext sottostante se è stato creato da questo contesto o se la proprietà è stata passata a questo contesto alla creazione del contesto.La connessione al database (oggetto DbConnection) viene eliminata anche se è stata creata da tale contesto o se la proprietà è stata passata a questo contesto durante la creazione dello stesso. | |
Entry(Object) | Ottiene un oggetto DbEntityEntry per l'entità specificata che fornisce l'accesso alle informazioni sull'entità e la possibilità di eseguire azioni sull'entità. | |
Entry<TEntity>(TEntity) | Ottiene un oggetto DbEntityEntry<TEntity> per l'entità specificata che fornisce l'accesso alle informazioni sull'entità e la possibilità di eseguire azioni sull'entità. | |
Equals | Determina se l'oggetto DbContext specificato è uguale all'oggetto DbContext corrente. (Esegue l'override di Object.Equals(Object)). | |
Finalize | (Ereditato da Object) | |
GetHashCode | Restituisce la funzione hash per questo oggetto DBContext. (Esegue l'override di Object.GetHashCode()). | |
GetType | Restituisce il tipo per l'oggetto DbContext corrente. | |
GetValidationErrors | Convalida le entità rilevate e restituisce una raccolta di DbEntityValidationResult che contiene i risultati della convalida. | |
MemberwiseClone | (Ereditato da Object) | |
OnModelCreating | Tale metodo viene chiamato dopo l'inizializzazione del modello di un contesto derivato, ma prima che il modello sia stato bloccato e utilizzato per inizializzare il contesto.L'implementazione predefinita di questo metodo non esegue alcuna operazione, ma è possibile eseguirne l'override in una classe derivata in modo da poter configurare ulteriormente il modello prima che venga bloccato. | |
SaveChanges | Salva tutte le modifiche apportate in questo contesto nel database sottostante. | |
SaveChangesAsync() | Salva in modo asincrono tutte le modifiche apportate in questo contesto nel database sottostante. | |
SaveChangesAsync(CancellationToken) | Salva in modo asincrono tutte le modifiche apportate in questo contesto nel database sottostante. | |
Set(Type) | Restituisce un'istanza di DbSet non generica per l'accesso alle entità del tipo specificato nel contesto e all'archivio sottostante. | |
Set<TEntity>() | Restituisce un'istanza di DbSet<TEntity> per l'accesso alle entità del tipo specificato nel contesto e all'archivio sottostante. | |
ShouldValidateEntity | Punto di estensione che consente all'utente di eseguire l'override del comportamento predefinito della convalida solo delle entità Added e Modified. | |
ToString | Restituisce la rappresentazione in forma di stringa dell'oggetto DbContext. (Esegue l'override di Object.ToString()). | |
ValidateEntity | Punto di estensione che consente all'utente di personalizzare la convalida di un'entità o di filtrare i risultati della convalida.Chiamato da GetValidationErrors(). |
In alto
Implementazioni esplicite dell'interfaccia
rapporti | Descrizione | |
---|---|---|
IObjectContextAdapter.ObjectContext | Restituisce l'oggetto ObjectContext di Entity Framework sottostante a questo contesto. |
In alto
Note
DbContext viene in genere utilizzato con un tipo derivato che contiene le proprietà DbSet<TEntity> per le entità radice del modello. Questi set vengono inizializzati automaticamente quando viene creata l'istanza della classe derivata. Questo comportamento può essere modificato applicando l'attributo SuppressDbSetInitializationAttribute all'intera classe del contesto derivato o alle singole proprietà della classe. Il modello Entity Data Model che supporta il contesto può essere specificato in diversi modi. Se si utilizza l'approccio Code First, le proprietà DbSet<TEntity> nel contesto derivato vengono utilizzate per compilare un modello in base alla convenzione. È possibile eseguire l'override del metodo OnModelCreating protetto per modificare questo modello. Per ottenere un controllo maggiore sul modello utilizzato per l'approccio Model First, è possibile creare in modo esplicito un oggetto DbCompiledModel da un oggetto DbModelBuilder e passare tale modello a uno dei costruttori DbContext. Quando si utilizza l'approccio Database First o Model First, è possibile creare il modello Entity Data Model mediante Entity Designer, o manualmente creando un file EDMX, e quindi è possibile specificare tale modello utilizzando la stringa di connessione dell'entità o un oggetto EntityConnection. La connessione al database, incluso il nome del database, può essere specificata in diversi modi. Se il costruttore DbContext senza parametri viene chiamato da un contesto derivato, verrà utilizzato il nome del contesto derivato per trovare una stringa di connessione nel file app.config o web.config. Se non viene trovata alcuna stringa di connessione, il nome verrà passato all'oggetto DefaultConnectionFactory registrato sulla classe Database. La factory di connessione utilizza quindi il nome del contesto come nome del database in una stringa di connessione predefinita. (Questa stringa di connessione predefinita fa riferimento a. \SQLEXPRESS nel computer locale a meno che non venga registrato un oggetto DefaultConnectionFactory diverso.) Anziché utilizzare il nome del contesto derivato, è inoltre possibile specificare in modo esplicito il nome del database o la connessione passando il nome a uno dei costruttori DbContext che accetta una stringa. Il nome può anche essere passato nel formato "nome=mionome". In tal caso, è necessario che il nome sia presente nel file di configurazione, altrimenti verrà generata un'eccezione. Si noti che la connessione trovata nel file app.config o web.config può essere una stringa di connessione del database normale, non una stringa di connessione Entity Framework speciale. In tal caso, l'oggetto DbContext utilizzerà Code First. Se tuttavia la connessione trovata nel file di configurazione è una stringa di connessione Entity Framework speciale, l'oggetto DbContext utilizzerà Database/Model First e verrà utilizzato il modello specificato nella stringa di connessione. Anziché utilizzare il nome del database o la connessione, è possibile utilizzare un oggetto DbConnection esistente o creato in modo esplicito. È possibile applicare un oggetto DbModelBuilderVersionAttribute a una classe derivata da DbContext per impostare la versione delle convenzioni utilizzate dal contesto quando viene creato un modello. Se non viene applicato alcun attributo, verrà utilizzata la versione più recente delle convenzioni.
Thread safety
Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. Non è invece garantita la sicurezza dei membri dell'istanza.