Panoramica di Entity FrameworkEntity Framework overview

Entity FrameworkEntity Framework è un set di tecnologie ADO.NET che supportano lo sviluppo di applicazioni software orientate ai dati.The Entity FrameworkEntity Framework is a set of technologies in ADO.NET that support the development of data-oriented software applications. Gli architetti e gli sviluppatori di questo tipo di applicazioni si trovano nella difficile condizione di dover realizzare due obiettivi molto diversi tra loro,Architects and developers of data-oriented applications have struggled with the need to achieve two very different objectives. ovvero la modellazione delle entità, delle relazioni e della logica dei problemi aziendali che sono preposti a risolvere e al tempo stesso la gestione dei motori dei dati usati per archiviare e recuperare i dati stessi.They must model the entities, relationships, and logic of the business problems they are solving, and they must also work with the data engines used to store and retrieve the data. Dal momento che i dati potrebbero essere distribuiti in più sistemi di archiviazione, ciascuno con i suoi protocolli, è necessario che nelle applicazioni che gestiscono un solo sistema di archiviazione venga rispettato l'equilibrio tra i requisiti del sistema di archiviazione e i requisiti di scrittura di codice dell'applicazione efficiente e gestibile.The data may span multiple storage systems, each with its own protocols; even applications that work with a single storage system must balance the requirements of the storage system against the requirements of writing efficient and maintainable application code.

Entity FrameworkEntity Framework consente agli sviluppatori di utilizzare i dati sotto forma di proprietà e oggetti specifici di un dominio, ad esempio clienti e indirizzi dei clienti, indipendentemente dalle colonne e dalle tabelle di database sottostanti in cui sono archiviati.The Entity FrameworkEntity Framework enables developers to work with data in the form of domain-specific objects and properties, such as customers and customer addresses, without having to concern themselves with the underlying database tables and columns where this data is stored. Con Entity FrameworkEntity Framework, gli sviluppatori possono operare a un livello superiore di astrazione quando gestiscono i dati e possono creare e gestire applicazioni orientate ai dati con meno codice rispetto alle applicazioni tradizionali.With the Entity FrameworkEntity Framework, developers can work at a higher level of abstraction when they deal with data, and can create and maintain data-oriented applications with less code than in traditional applications. Poiché il Entity FrameworkEntity Framework è un componente del .NET Framework.NET Framework, Entity FrameworkEntity Framework applicazioni eseguibili in qualsiasi computer in cui il .NET Framework.NET Framework a partire dalla versione 3.5 SP1 è installato.Because the Entity FrameworkEntity Framework is a component of the .NET Framework.NET Framework, Entity FrameworkEntity Framework applications can run on any computer on which the .NET Framework.NET Framework starting with version 3.5 SP1 is installed.

Dare vita ai modelliGive life to models

Un approccio di progettazione comune e consolidato quando si compila un'applicazione o un servizio consiste nel dividere l'applicazione o il servizio in tre parti: un modello di dominio, un modello logico e un modello fisico.A longstanding and common design approach when building an application or service is the division of the application or service into three parts: a domain model, a logical model, and a physical model. Il modello di dominio definisce le entità e le relazioni nel sistema da modellare.The domain model defines the entities and relationships in the system that is being modeled. Il modello logico per un database relazionale normalizza le entità e le relazioni in tabelle con vincoli di chiave esterna.The logical model for a relational database normalizes the entities and relationships into tables with foreign key constraints. Il modello fisico gestisce le funzionalità di un determinato motore dei dati specificando dettagli sull'archiviazione come il partizionamento e l'indicizzazione.The physical model addresses the capabilities of a particular data engine by specifying storage details such as partitioning and indexing.

Il modello fisico viene ridefinito dagli amministratori del database per migliorare le prestazioni, ma i programmatori che scrivono il codice delle applicazioni tendono a usare solo il modello logico scrivendo query SQL e chiamando stored procedure.The physical model is refined by database administrators to improve performance, but programmers writing application code primarily confine themselves to working with the logical model by writing SQL queries and calling stored procedures. I modelli di dominio vengono in genere usati come strumento per l'acquisizione e la comunicazione dei requisiti di un'applicazione, spesso come diagrammi inerti visualizzati e discussi nelle fasi iniziali di un progetto e quindi abbandonati.Domain models are generally used as a tool for capturing and communicating the requirements of an application, frequently as inert diagrams that are viewed and discussed in the early stages of a project and then abandoned. Molti team di sviluppo saltano la fase di creazione di un modello concettuale e partono direttamente dall'indicazione di tabelle, colonne e chiavi in un database relazionale.Many development teams skip creating a conceptual model and begin by specifying tables, columns, and keys in a relational database.

Il Entity FrameworkEntity Framework favorisce la realizzazione dei modelli, consentendo agli sviluppatori di eseguire query sulle entità e relazioni nel modello di dominio (chiamato un concettuale modello nel Entity FrameworkEntity Framework) basandosi al tempo stesso il Entity FrameworkEntity Framework per tradurre quelli operazioni in comandi specifici dell'origine dati.The Entity FrameworkEntity Framework gives life to models by enabling developers to query entities and relationships in the domain model (called a conceptual model in the Entity FrameworkEntity Framework) while relying on the Entity FrameworkEntity Framework to translate those operations to data source–specific commands. Le applicazioni non sono quindi più vincolate a dipendenze hard-coded su una determinata origine dati.This frees applications from hard-coded dependencies on a particular data source.

Quando si usa Code First, viene eseguito il mapping del modello concettuale al modello di archiviazione nel codice.When working with Code First, the conceptual model is mapped to the storage model in code. Entity FrameworkEntity Framework può dedurre il modello concettuale in base ai tipi di oggetto e alle configurazioni aggiuntive definite.The Entity FrameworkEntity Framework can infer the conceptual model based on the object types and additional configurations that you define. I metadati di mapping vengono generati in fase di esecuzione in base a una combinazione della modalità di definizione dei tipi di dominio e delle informazioni di configurazione aggiuntive fornite nel codice.The mapping metadata is generated during run time based on a combination of how you defined your domain types and additional configuration information that you provide in code. Entity FrameworkEntity Framework genera il database secondo le necessità in base ai metadati. generates the database as needed based on the metadata. Per altre informazioni, vedere creazione e il Mapping di un modello concettuale.For more information, see Creating and Mapping a Conceptual Model.

Quando si usano gli strumenti di Entity Data Model, il modello concettuale, il modello di archiviazione e i mapping tra i due vengono espressi in schemi basati su XML e definiti in file con estensioni corrispondenti:When working with the Entity Data Model Tools, the conceptual model, the storage model, and the mappings between the two are expressed in XML-based schemas and defined in files that have corresponding name extensions:

  • Il linguaggio CSDL (Conceptual Schema Definition Language) definisce il modello concettuale.Conceptual schema definition language (CSDL) defines the conceptual model. CSDL è la Entity FrameworkEntity Frameworkdell'implementazione del Entity Data Model.CSDL is the Entity FrameworkEntity Framework's implementation of the Entity Data Model. L'estensione del file è csdl.The file extension is .csdl.

  • Il linguaggio SSDL (Store Schema Definition Language) definisce il modello di archiviazione, chiamato anche modello logico.Store schema definition language (SSDL) defines the storage model, which is also called the logical model. L'estensione del file è ssdl.The file extension is .ssdl.

  • Il linguaggio MSL (Mapping Specification Language) definisce i mapping tra il modello di archiviazione e il modello concettuale.Mapping specification language (MSL) defines the mappings between the storage and conceptual models. L'estensione del file è msl.The file extension is .msl.

Il modello di archiviazione e i mapping possono essere modificati in base alle esigenze senza che sia necessario modificare il modello concettuale, le classi di dati o il codice dell'applicazione.The storage model and mappings can change as needed without requiring changes to the conceptual model, data classes, or application code. Poiché i modelli di archiviazione sono specifici del provider, è possibile usare un modello concettuale coerente in varie origini dati.Because storage models are provider-specific, you can work with a consistent conceptual model across various data sources.

Il Entity FrameworkEntity Framework Usa questi modelli e mapping di file da creare, leggere, aggiornare ed eliminare entità e relazioni nel modello concettuale in operazioni equivalenti nell'origine dati.The Entity FrameworkEntity Framework uses these model and mapping files to create, read, update, and delete operations against entities and relationships in the conceptual model to equivalent operations in the data source. Il Entity FrameworkEntity Framework supporta anche il mapping di entità nel modello concettuale alle stored procedure nell'origine dati.The Entity FrameworkEntity Framework even supports mapping entities in the conceptual model to stored procedures in the data source. Per altre informazioni, vedere CSDL, SSDL e MSL specifiche.For more information, see CSDL, SSDL, and MSL Specifications.

Oggetti Map per i datiMap objects to data

La programmazione orientata a oggetti pone una serie di sfide relativamente all'interazione con i sistemi di archiviazione dei dati.Object-oriented programming poses a challenge for interacting with data storage systems. Anche se l'organizzazione delle classi in genere rispecchia l'organizzazione delle tabelle dei database relazionali, non si può parlare di una corrispondenza esatta.Although the organization of classes frequently mirrors the organization of relational database tables, the fit is not perfect. Più tabelle normalizzate corrispondono spesso a una singola classe e le relazioni tra classi sono spesso rappresentate in modo diverso rispetto alle relazioni tra tabelle.Multiple normalized tables frequently correspond to a single class, and relationships between classes are often represented differently than relationships between tables are represented. Per rappresentare il cliente per un determinato ordine, ad esempio, una classe Order potrebbe usare una proprietà contenente un riferimento a un'istanza di una classe Customer, mentre una riga della tabella Order in un database contiene una colonna o un set di colonne di chiave esterna con un valore che corrisponde a un valore di chiave primaria nella tabella Customer.For example, to represent the customer for a sales order, an Order class might use a property that contains a reference to an instance of a Customer class, while an Order table row in a database contains a foreign key column (or set of columns) with a value that corresponds to a primary key value in the Customer table. Una classe Customer potrebbe disporre di una proprietà denominata Orders contenente una raccolta di istanze della classe Order, mentre la tabella Customer in un database non include colonne confrontabili.A Customer class might have a property named Orders that contains a collection of instances of the Order class, while the Customer table in a database has no comparable column. Entity FrameworkEntity Framework offre agli sviluppatori la flessibilità per rappresentare relazioni in questo modo o per modellare con maggiore precisione le relazioni come vengono rappresentate nel database.The Entity FrameworkEntity Framework provides developers with the flexibility to represent relationships in this way, or to more closely model relationships as they are represented in the database.

Le soluzioni esistenti hanno tentato di colmare questo divario, spesso definito "mancata corrispondenza dell'impedenza" eseguendo solo il mapping di classi e proprietà orientate a oggetti a tabelle e colonne relazionali.Existing solutions have tried to bridge this gap, which is frequently called an "impedance mismatch", by only mapping object-oriented classes and properties to relational tables and columns. Anziché adottare questo approccio tradizionale, il Entity FrameworkEntity Framework esegue il mapping di tabelle relazionali, colonne e vincoli di chiave esterna in modelli logici a entità e relazioni nei modelli concettuali.Instead of taking this traditional approach, the Entity FrameworkEntity Framework maps relational tables, columns, and foreign key constraints in logical models to entities and relationships in conceptual models. Il risultato ottenuto è una maggiore flessibilità nella definizione degli oggetti e nell'ottimizzazione del modello logico.This enables greater flexibility both in defining objects and optimizing the logical model. Gli strumenti di Entity Data ModelEntity Data Model generano classi di dati estensibili basate sul modello concettuale.The Entity Data ModelEntity Data Model tools generate extensible data classes based on the conceptual model. Queste classi sono classi parziali che è possibile estendere con membri altri aggiunti dallo sviluppatore.These classes are partial classes that can be extended with additional members that the developer adds. Per impostazione predefinita, le classi generate per un particolare modello concettuale derivano da classi di base che forniscono servizi per la materializzazione di entità come oggetti e per il rilevamento e il salvataggio delle modifiche.By default, the classes that are generated for a particular conceptual model derive from base classes that provide services for materializing entities as objects and for tracking and saving changes. Queste classi possono essere usate dagli sviluppatori per gestire le entità e le relazioni come oggetti correlati da associazioni.Developers can use these classes to work with the entities and relationships as objects related by associations. Gli sviluppatori possono inoltre personalizzare le classi generate per un modello concettuale.Developers can also customize the classes that are generated for a conceptual model. Per altre informazioni, vedere utilizzo di oggetti.For more information, see Working with Objects.

Accesso e modifica dei dati di entitàAccess and change entity data

Oltre a rappresentare una soluzione di mapping relazionale a oggetti, Entity FrameworkEntity Framework è uno strumento che consente alle applicazioni di accedere e modificare i dati rappresentati come entità e relazioni nel modello concettuale.More than just another object-relational mapping solution, the Entity FrameworkEntity Framework is fundamentally about enabling applications to access and change data that is represented as entities and relationships in the conceptual model. Entity FrameworkEntity Framework utilizza le informazioni nei file del modello e di mapping per tradurre le query di oggetto eseguite su tipi di entità rappresentati nel modello concettuale in query specifiche dell'origine dati.The Entity FrameworkEntity Framework uses information in the model and mapping files to translate object queries against entity types represented in the conceptual model into data source-specific queries. I risultati della query vengono materializzati in oggetti che il Entity FrameworkEntity Framework gestisce.Query results are materialized into objects that the Entity FrameworkEntity Framework manages. Il Entity FrameworkEntity Framework disponibili i seguenti metodi per eseguire query di un modello concettuale e restituire oggetti:The Entity FrameworkEntity Framework provides the following ways to query a conceptual model and return objects:

  • LINQ to EntitiesLINQ to Entities.. Fornisce il supporto di Language-Integrated Query (LINQ) per eseguire query sui tipi di entità definiti in un modello concettuale.Provides Language-Integrated Query (LINQ) support for querying entity types that are defined in a conceptual model. Per altre informazioni, vedere LINQ to Entities.For more information, see LINQ to Entities.

  • Entity SQLEntity SQL.. Un dialetto indipendente dall'archiviazione di SQL che interagisce direttamente con le entità nel modello concettuale e supporta Entity Data ModelEntity Data Model concetti.A storage-independent dialect of SQL that works directly with entities in the conceptual model and that supports Entity Data ModelEntity Data Model concepts. Entity SQLEntity SQL viene usato sia con query di oggetto e le query eseguite utilizzando il provider EntityClient. is used both with object queries and queries that are executed by using the EntityClient provider. Per altre informazioni, vedere Panoramica di Entity SQL.For more information, see Entity SQL Overview.

Entity FrameworkEntity Framework include il provider di dati EntityClient.The Entity FrameworkEntity Framework includes the EntityClient data provider. Tale provider gestisce connessioni, converte query di entità in query specifiche dell'origine dati e restituisce un lettore dati usato da Entity FrameworkEntity Framework per materializzare i dati dell'entità in oggetti.This provider manages connections, translates entity queries into data source-specific queries, and returns a data reader that the Entity FrameworkEntity Framework uses to materialize entity data into objects. Quando la materializzazione degli oggetti non sia obbligatorio, consente inoltre al provider EntityClient, ad esempio uno standard ADO.NETADO.NET provider di dati, consentendo alle applicazioni di eseguire Entity SQLEntity SQL esegue una query e usare il lettore dati di sola lettura restituito.When object materialization is not required, the EntityClient provider can also be used like a standard ADO.NETADO.NET data provider by enabling applications to execute Entity SQLEntity SQL queries and consume the returned read-only data reader. Per altre informazioni, vedere EntityClient Provider per Entity Framework.For more information, see EntityClient Provider for the Entity Framework.

Nel diagramma seguente viene illustrata l'architettura di Entity FrameworkEntity Framework per l'accesso ai dati:The following diagram illustrates the Entity FrameworkEntity Framework architecture for accessing data:

Diagramma dell'architettura di Entity FrameworkEntity Framework Architectural Diagram

Tramite gli strumenti di Entity Data ModelEntity Data Model è possibile generare una classe derivata da System.Data.Objects.ObjectContext o System.Data.Entity.DbContext che rappresenta il contenitore di entità definito nel modello concettuale.The Entity Data ModelEntity Data Model Tools can generate a class derived from System.Data.Objects.ObjectContext or System.Data.Entity.DbContext that represents the entity container in the conceptual model. Questo contesto dell'oggetto fornisce le funzionalità di registrazione delle modifiche e di gestione di identità, concorrenza e relazioni.This object context provides the facilities for tracking changes and managing identities, concurrency, and relationships. Questa classe espone inoltre un metodo SaveChanges che scrive inserimenti, aggiornamenti ed eliminazioni nell'origine dati.This class also exposes a SaveChanges method that writes inserts, updates, and deletes to the data source. Analogamente alle query, queste modifiche vengono eseguite da comandi generati automaticamente dal sistema o da stored procedure specificate dallo sviluppatore.Like queries, these changes are either made by commands automatically generated by the system or by stored procedures that are specified by the developer.

Provider di datiData providers

Il provider EntityClient estende il modello del provider ADO.NETADO.NET tramite l'accesso ai dati in termini di relazioni ed entità concettuali.The EntityClient provider extends the ADO.NETADO.NET provider model by accessing data in terms of conceptual entities and relationships. Esegue query che usano Entity SQLEntity SQL.It executes queries that use Entity SQLEntity SQL. Entity SQLEntity SQL fornisce il linguaggio di query sottostante che consente la comunicazione di EntityClient con il database. provides the underlying query language that enables EntityClient to communicate with the database. Per altre informazioni, vedere EntityClient Provider per Entity Framework.For more information, see EntityClient Provider for the Entity Framework.

Entity FrameworkEntity Framework include un provider di dati SqlClient aggiornato che supporta gli alberi dei comandi canonici.The Entity FrameworkEntity Framework includes an updated SqlClient Data Provider that supports canonical command trees. Per altre informazioni, vedere SqlClient per Entity Framework.For more information, see SqlClient for the Entity Framework.

Strumenti di Entity data modelEntity data model tools

Combinazione con il Entity FrameworkEntity Framework runtime, Visual Studio include il mapping e agli strumenti di modellazione.Together with the Entity FrameworkEntity Framework runtime, Visual Studio includes the mapping and modeling tools. Per altre informazioni, vedere modellazione e Mapping.For more information, see Modeling and Mapping.

Altre informazioniLearn more

Per altre informazioni sul Entity FrameworkEntity Framework, vedere:To learn more about the Entity FrameworkEntity Framework, see:

Guida introduttiva : fornisce informazioni su come iniziare subito e sviluppare App usando il avvio rapido, che illustra come creare una semplice Entity FrameworkEntity Framework dell'applicazione.Getting Started - Provides information about how to get up and running quickly using the Quickstart, which shows how to create a simple Entity FrameworkEntity Framework application.

Terminologia relativa a Entity Framework -definisce molti dei termini introdotti da Entity Data Model e il Entity FrameworkEntity Framework e che vengono usati in Entity FrameworkEntity Framework documentazione.Entity Framework Terminology - Defines many of the terms that are introduced by the Entity Data Model and the Entity FrameworkEntity Framework and that are used in Entity FrameworkEntity Framework documentation.

Risorse di Entity Framework : vengono forniti collegamenti ad argomenti concettuali e collegamenti a risorse per la compilazione ed argomenti esterni Entity FrameworkEntity Framework applicazioni.Entity Framework Resources - Provides links to conceptual topics and links to external topics and resources for building Entity FrameworkEntity Framework applications.

Vedere ancheSee also