Entity Framework
The ADO。NET Entity Framework is designed to enable developers to create data access applications by programming against a conceptual application model instead of programming directly against a relational storage schema。 The goal is to decrease the amount of code and maintenance required for data-oriented applications。
Entity Data Model (EDM)
An Entity Data Model (EDM) is a design specification that defines application data as sets of entities and relationships。 Data in this model supports object-relational mapping and data programmability across application boundaries。
EDM data types and relationships are defined in an conceptual model。 This is an XML schema written in conceptual schema definition language (CSDL)。 The conceptual model is used to build programmable classes that represent application data。 Developers can extend these objects as required to support various application needs。
Object Services
Object Services allow programmers to interact with the conceptual model through a set of common language runtime (CLR) classes。 These classes can be automatically generated from the conceptual model or can be developed independently to reflect the structure of the conceptual model。 Object Services also provides infrastructure support for the Entity Framework, including services such as state management, change tracking, identity resolution, loading and navigating relationships, propagating object changes to database modifications, and query building support for Entity SQL。
LINQ to Entities
LINQ to Entities is a language-integrated query (LINQ) implementation that allows developers to create strongly-typed queries against the Entity Framework object context by using LINQ expressions and LINQ standard query operators。 LINQ to Entities allows developers to work against a conceptual model with a very flexible object-relational mapping across Microsoft SQL Server and third-party databases。
Entity SQL
Entity SQL is a text-based query language designed to interact with an Entity Data Model。 Entity SQL is an SQL dialect that contains constructs for querying in terms of higher-level modeling concepts, such as inheritance, complex types, and explicit relationships。 Developers can also use Entity SQL directly with Object Services。
EntityClient
EntityClient is a new 。NET Framework data provider used for interacting with an Entity Data Model。 EntityClient follows the 。NET Framework data provider pattern of exposing EntityConnection and EntityCommand objects that return an EntityDataReader。 EntityClient works with the Entity SQL language, providing flexible mapping to storage-specific data providers。 For more information, see EntityClient and Entity SQL。
ADO。NET Data Services
The ADO。NET Data Services framework is used to deploy data services on the Web or on an intranet。 The data is structured as entities and relationships according to the specifications of the Entity Data Model。 Data deployed on this model is addressable by standard HTTP protocol。
Entity Data Model Tools
The Entity Framework provides command-line tools, wizards, and designers to facilitate building EDM applications。 The EntityDataSource control supports data binding scenarios based on the EDM。 The programming surface of the EntityDataSource control is similar to other data source controls in Visual Studio。
3、LINQ and ADO。NET
Today, many business developers must use two (or more) programming languages: a high-level language for the business logic and presentation layers (such as Visual C# or Visual Basic), and a query language to interact with the database (such as Transact-SQL)。 This requires the developer to be proficient in several languages to be effective, and also causes language mismatches in the development environment。 For example, an application that uses a data access API to execute a query against a database specifies the query as a string literal by using quotation marks。 This query string is un-readable to the compiler and is not checked for errors, such as invalid syntax or whether the columns or rows it references actually exist。 There is no type checking of the query parameters and no IntelliSense support, either。