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
Metodo protetto 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.
Metodo pubblico 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.
Metodo protetto 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.
Metodo pubblico 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.
Metodo pubblico 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.
Metodo pubblico DbContext(ObjectContext, Boolean) Costruisce una nuova istanza del contesto intorno a un oggetto ObjectContext esistente.
Metodo pubblico 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
Proprietà pubblica ChangeTracker Fornisce l'accesso alle funzionalità del contesto che gestiscono il rilevamento delle modifiche delle entità.
Proprietà pubblica Configuration Fornisce l'accesso alle opzioni di configurazione del contesto.
Proprietà pubblica 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
Metodo pubblico Dispose() Chiama il metodo Dispose protetto.
Metodo 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.
Metodo pubblico 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à.
Metodo pubblico 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à.
Metodo pubblico Equals Determina se l'oggetto DbContext specificato è uguale all'oggetto DbContext corrente. (Esegue l'override di Object.Equals(Object)).
Metodo protetto Finalize (Ereditato da Object)
Metodo pubblico GetHashCode Restituisce la funzione hash per questo oggetto DBContext. (Esegue l'override di Object.GetHashCode()).
Metodo pubblico GetType Restituisce il tipo per l'oggetto DbContext corrente.
Metodo pubblico GetValidationErrors Convalida le entità rilevate e restituisce una raccolta di DbEntityValidationResult che contiene i risultati della convalida.
Metodo protetto MemberwiseClone (Ereditato da Object)
Metodo protetto 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.
Metodo pubblico SaveChanges Salva tutte le modifiche apportate in questo contesto nel database sottostante.
Metodo pubblico SaveChangesAsync() Salva in modo asincrono tutte le modifiche apportate in questo contesto nel database sottostante.
Metodo pubblico SaveChangesAsync(CancellationToken) Salva in modo asincrono tutte le modifiche apportate in questo contesto nel database sottostante.
Metodo pubblico Set(Type) Restituisce un'istanza di DbSet non generica per l'accesso alle entità del tipo specificato nel contesto e all'archivio sottostante.
Metodo pubblico Set<TEntity>() Restituisce un'istanza di DbSet<TEntity> per l'accesso alle entità del tipo specificato nel contesto e all'archivio sottostante.
Metodo protetto ShouldValidateEntity Punto di estensione che consente all'utente di eseguire l'override del comportamento predefinito della convalida solo delle entità Added e Modified.
Metodo pubblico ToString Restituisce la rappresentazione in forma di stringa dell'oggetto DbContext. (Esegue l'override di Object.ToString()).
Metodo protetto 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
Implementazione esplicita dell'interfacciaProprietà privata 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.

Vedere anche

Riferimento

Spazio dei nomi System.Data.Entity