diff --git a/docs/framework/data/adonet/ef/language-reference/query-expression-syntax-examples-projection.md b/docs/framework/data/adonet/ef/language-reference/query-expression-syntax-examples-projection.md index 293fe4023c40e..42690fb04e5bb 100644 --- a/docs/framework/data/adonet/ef/language-reference/query-expression-syntax-examples-projection.md +++ b/docs/framework/data/adonet/ef/language-reference/query-expression-syntax-examples-projection.md @@ -7,7 +7,7 @@ dev_langs: ms.assetid: 079926c5-e6b5-4fb9-b4cf-9c63886dd626 --- # Query Expression Syntax Examples: Projection -The examples in this topic demonstrate how to use the `Select` method and the `From … From …` keywords to query the [AdventureWorks Sales Model](https://msdn.microsoft.com/library/f16cd988-673f-4376-b034-129ca93c7832) using query expression syntax. `From … From …` is the query based equivalent of the `SelectMany` method. The AdventureWorks Sales model used in these examples is built from the Contact, Address, Product, SalesOrderHeader, and SalesOrderDetail tables in the AdventureWorks sample database. +The examples in this topic demonstrate how to use the `Select` method and the `From … From …` keywords to query the [AdventureWorks Sales Model](https://archive.codeplex.com/?p=msftdbprodsamples) using query expression syntax. `From … From …` is the query based equivalent of the `SelectMany` method. The AdventureWorks Sales model used in these examples is built from the Contact, Address, Product, SalesOrderHeader, and SalesOrderDetail tables in the AdventureWorks sample database. The examples in this topic use the following `using`/`Imports` statements: diff --git a/docs/framework/data/adonet/ef/language-reference/skip-entity-sql.md b/docs/framework/data/adonet/ef/language-reference/skip-entity-sql.md index abad3b23851fd..fee431576f6ce 100644 --- a/docs/framework/data/adonet/ef/language-reference/skip-entity-sql.md +++ b/docs/framework/data/adonet/ef/language-reference/skip-entity-sql.md @@ -27,10 +27,10 @@ You can perform physical paging by using the SKIP sub-clause in the ORDER BY cla > > `SELECT [E] FROM Container.EntitySet AS [E] ORDER BY [E].[NonKeyColumn] DESC SKIP 5L` - The [!INCLUDE[esql](../../../../../../includes/esql-md.md)] query in [this](https://msdn.microsoft.com/library/bb738702\(v=vs.100\).aspx#_ESQL) example uses the ORDER BY operator with SKIP to specify the sort order used on objects returned in a SELECT statement. + The [!INCLUDE[esql](../../../../../../includes/esql-md.md)] query in [How to: Page Through Query Results](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb738702(v=vs.100)) uses the ORDER BY operator with SKIP to specify the sort order used on objects returned in a SELECT statement. ## See also - [ORDER BY](../../../../../../docs/framework/data/adonet/ef/language-reference/order-by-entity-sql.md) -- [How to: Page Through Query Results](https://msdn.microsoft.com/library/ffc0f920-e7de-42e0-9b12-ef356421d030) +- [How to: Page Through Query Results](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb738702(v=vs.100)) - [Paging](../../../../../../docs/framework/data/adonet/ef/language-reference/paging-entity-sql.md) - [TOP](../../../../../../docs/framework/data/adonet/ef/language-reference/top-entity-sql.md) diff --git a/docs/framework/data/adonet/ef/language-reference/spatial-functions.md b/docs/framework/data/adonet/ef/language-reference/spatial-functions.md index 3ad93ac7f09a5..8fb92c1ea8b8a 100644 --- a/docs/framework/data/adonet/ef/language-reference/spatial-functions.md +++ b/docs/framework/data/adonet/ef/language-reference/spatial-functions.md @@ -10,4 +10,4 @@ There is no literal format for spatial types. However, you can use canonical Ent GeometryFromText('POINT (43 -73)') ``` - The [SpatialEdmFunctions Methods](https://msdn.microsoft.com/library/hh749531.aspx) page lists all spatial canonical Entity Framework methods. Click on a method of interest to see what parameters should be passed to a function. + The methods have all spatial canonical Entity Framework methods. Click on a method of interest to see what parameters should be passed to a function. diff --git a/docs/framework/data/adonet/ef/language-reference/standard-query-operators-in-linq-to-entities-queries.md b/docs/framework/data/adonet/ef/language-reference/standard-query-operators-in-linq-to-entities-queries.md index e199939d2815c..3891f90f86c08 100644 --- a/docs/framework/data/adonet/ef/language-reference/standard-query-operators-in-linq-to-entities-queries.md +++ b/docs/framework/data/adonet/ef/language-reference/standard-query-operators-in-linq-to-entities-queries.md @@ -4,7 +4,7 @@ ms.date: "08/21/2018" ms.assetid: 7fa55a9b-6219-473d-b1e5-2884a32dcdff --- # Standard Query Operators in LINQ to Entities Queries -In a query, you specify the information that you want to retrieve from the data source. A query can also specify how that information should be sorted, grouped, and shaped before it is returned. LINQ provides a set of standard query methods that you can use in a query. Most of these methods operate on sequences; in this context, a sequence is an object whose type implements the interface or the interface. The standard query operators query functionality includes filtering, projection, aggregation, sorting, grouping, paging, and more. Some of the more frequently used standard query operators have dedicated keyword syntax so that they can be called by using query expression syntax. A query expression is a different, more readable way to express a query than the method-based equivalent. Query expression clauses are translated into calls to the query methods at compile time. For a list of standard query operators that have equivalent query expression clauses, see [Standard Query Operators Overview](https://msdn.microsoft.com/library/24cda21e-8af8-4632-b519-c404a839b9b2). +In a query, you specify the information that you want to retrieve from the data source. A query can also specify how that information should be sorted, grouped, and shaped before it is returned. LINQ provides a set of standard query methods that you can use in a query. Most of these methods operate on sequences; in this context, a sequence is an object whose type implements the interface or the interface. The standard query operators query functionality includes filtering, projection, aggregation, sorting, grouping, paging, and more. Some of the more frequently used standard query operators have dedicated keyword syntax so that they can be called by using query expression syntax. A query expression is a different, more readable way to express a query than the method-based equivalent. Query expression clauses are translated into calls to the query methods at compile time. For a list of standard query operators that have equivalent query expression clauses, see [Standard Query Operators Overview](https://docs.microsoft.com/previous-versions/visualstudio/visual-studio-2013/bb397896(v=vs.120)). Not all of the standard query operators are supported in [!INCLUDE[linq_entities](../../../../../../includes/linq-entities-md.md)] queries. For more information, see [Supported and Unsupported LINQ Methods (LINQ to Entities)](../../../../../../docs/framework/data/adonet/ef/language-reference/supported-and-unsupported-linq-methods-linq-to-entities.md). This topic provides information about the standard query operators that is specific to [!INCLUDE[linq_entities](../../../../../../includes/linq-entities-md.md)]. For more information about known issues in [!INCLUDE[linq_entities](../../../../../../includes/linq-entities-md.md)] queries, see [Known Issues and Considerations in LINQ to Entities](../../../../../../docs/framework/data/adonet/ef/language-reference/known-issues-and-considerations-in-linq-to-entities.md). @@ -72,4 +72,4 @@ In a query, you specify the information that you want to retrieve from the data ## See also - [Supported and Unsupported LINQ Methods (LINQ to Entities)](../../../../../../docs/framework/data/adonet/ef/language-reference/supported-and-unsupported-linq-methods-linq-to-entities.md) -- [Standard Query Operators Overview](https://msdn.microsoft.com/library/24cda21e-8af8-4632-b519-c404a839b9b2) +- [Standard Query Operators Overview](https://docs.microsoft.com/previous-versions/visualstudio/visual-studio-2013/bb397896(v=vs.120)) diff --git a/docs/framework/data/adonet/ef/language-reference/treat-entity-sql.md b/docs/framework/data/adonet/ef/language-reference/treat-entity-sql.md index 1d7fc695e55b5..494da8573e443 100644 --- a/docs/framework/data/adonet/ef/language-reference/treat-entity-sql.md +++ b/docs/framework/data/adonet/ef/language-reference/treat-entity-sql.md @@ -56,7 +56,7 @@ WHERE p IS OF (NamespaceName.Employee) |`TREAT (RowType AS RowType)`|Throws an exception.| ## Example - The following [!INCLUDE[esql](../../../../../../includes/esql-md.md)] query uses the TREAT operator to convert an object of the type Course to a collection of objects of the type OnsiteCourse. The query is based on the [School Model](https://msdn.microsoft.com/library/859a9587-81ea-4a45-9bc0-f8d330e1adac). + The following [!INCLUDE[esql](../../../../../../includes/esql-md.md)] query uses the TREAT operator to convert an object of the type Course to a collection of objects of the type OnsiteCourse. The query is based on the [School Model](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb896300(v=vs.100)). [!code-csharp[DP EntityServices Concepts 2#TREAT_ISOF](../../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts 2/cs/entitysql.cs#treat_isof)] diff --git a/docs/framework/data/adonet/ef/language-reference/user-defined-functions-entity-sql.md b/docs/framework/data/adonet/ef/language-reference/user-defined-functions-entity-sql.md index abb0b481467cb..2fe711e0fa29a 100644 --- a/docs/framework/data/adonet/ef/language-reference/user-defined-functions-entity-sql.md +++ b/docs/framework/data/adonet/ef/language-reference/user-defined-functions-entity-sql.md @@ -4,7 +4,7 @@ ms.date: "03/30/2017" ms.assetid: 3f9e6bbd-8e5a-43e1-809f-f8a61338e522 --- # User-Defined Functions (Entity SQL) -Entity SQL supports calling user-defined functions in a query. You can define these functions inline with the query (see [How to: Call a User-Defined Function](https://msdn.microsoft.com/library/ad131b86-8b4e-4747-8605-d4fc64fb9d02)) or as part of the conceptual model (see [How to: Define Custom Functions in the Conceptual Model](https://msdn.microsoft.com/library/0dad7b8b-58f6-4271-b238-f34810d68e5f)). Conceptual model functions are defined as an Entity SQL command in the [DefiningExpression](https://msdn.microsoft.com/library/d3da8d8b-a048-47ee-8d81-0c2ea3acdd3e) element of a [Function](https://msdn.microsoft.com/library/dc3beca7-55cf-4977-8db0-5064cdbab134) element in the conceptual model. +Entity SQL supports calling user-defined functions in a query. You can define these functions inline with the query (see [How to: Call a User-Defined Function](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/dd490951(v=vs.100))) or as part of the conceptual model (see [How to: Define Custom Functions in the Conceptual Model](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/dd456812(v=vs.100))). Conceptual model functions are defined as an Entity SQL command in the [DefiningExpression](/ef/ef6/modeling/designer/advanced/edmx/csdl-spec#definingexpression-element-csdl) element of a [Function](/ef/ef6/modeling/designer/advanced/edmx/csdl-spec#function-element-csdl) element in the conceptual model. Entity SQL enables you to define functions in the query command itself. The [FUNCTION](../../../../../../docs/framework/data/adonet/ef/language-reference/function-entity-sql.md) operator defines inline functions. You can define multiple functions in a single command, and these functions can have the same function name, as long as the function signatures are unique. For more information, see [Function Overload Resolution](../../../../../../docs/framework/data/adonet/ef/language-reference/function-overload-resolution-entity-sql.md). diff --git a/docs/framework/data/adonet/ef/migration-considerations.md b/docs/framework/data/adonet/ef/migration-considerations.md index c5f76b1b7c155..f8f87b07ee466 100644 --- a/docs/framework/data/adonet/ef/migration-considerations.md +++ b/docs/framework/data/adonet/ef/migration-considerations.md @@ -52,42 +52,49 @@ The [!INCLUDE[vstecado](../../../../../includes/vstecado-md.md)] Entity Framewor ## Considerations for Applications that Use ADO.NET Providers [!INCLUDE[vstecado](../../../../../includes/vstecado-md.md)] providers, such as SqlClient, enable you to query a data source to return tabular data. Data can also be loaded into an [!INCLUDE[vstecado](../../../../../includes/vstecado-md.md)] DataSet. The following list describes considerations for upgrading an application that uses an existing [!INCLUDE[vstecado](../../../../../includes/vstecado-md.md)] provider: - Displaying tabular data by using a data reader. - You may consider executing an [!INCLUDE[esql](../../../../../includes/esql-md.md)] query using the EntityClient provider and enumerating through the returned object. Do this only if your application displays tabular data using a data reader and does not require the facilities provided by the [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] for materializing data into objects, tracking changes, and making updates. You can continue to use existing data access code that makes updates to the data source, but you can use the existing connection accessed from the property of . For more information, see [EntityClient Provider for the Entity Framework](../../../../../docs/framework/data/adonet/ef/entityclient-provider-for-the-entity-framework.md). +- Displaying tabular data by using a data reader. + + You may consider executing an [!INCLUDE[esql](../../../../../includes/esql-md.md)] query using the EntityClient provider and enumerating through the returned object. Do this only if your application displays tabular data using a data reader and does not require the facilities provided by the [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] for materializing data into objects, tracking changes, and making updates. You can continue to use existing data access code that makes updates to the data source, but you can use the existing connection accessed from the property of . For more information, see [EntityClient Provider for the Entity Framework](../../../../../docs/framework/data/adonet/ef/entityclient-provider-for-the-entity-framework.md). - Working with DataSets. - The [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] provides many of the same functionalities provided by DataSet, including in-memory persistence, change tracking, data binding, and serializing objects as XML data. For more information, see [Working with Objects](../../../../../docs/framework/data/adonet/ef/working-with-objects.md). +- Working with DataSets. + + The [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] provides many of the same functionalities provided by DataSet, including in-memory persistence, change tracking, data binding, and serializing objects as XML data. For more information, see [Working with Objects](../../../../../docs/framework/data/adonet/ef/working-with-objects.md). - If the [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] does not provide the functionality of DataSet needed by your application, you can still take advantage of the benefits of LINQ queries by using [!INCLUDE[linq_dataset](../../../../../includes/linq-dataset-md.md)]. For more information, see [LINQ to DataSet](../../../../../docs/framework/data/adonet/linq-to-dataset.md). + If the [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] does not provide the functionality of DataSet needed by your application, you can still take advantage of the benefits of LINQ queries by using [!INCLUDE[linq_dataset](../../../../../includes/linq-dataset-md.md)]. For more information, see [LINQ to DataSet](../../../../../docs/framework/data/adonet/linq-to-dataset.md). ## Considerations for Applications that Bind Data to Controls The [!INCLUDE[dnprdnshort](../../../../../includes/dnprdnshort-md.md)] lets you encapsulate data in a data source, such as a DataSet or an [!INCLUDE[vstecasp](../../../../../includes/vstecasp-md.md)] data source control, and then bind user interface elements to those data controls. The following list describes considerations for binding controls to Entity Framework data. - Binding data to controls. - When you query the conceptual model, the [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] returns the data as objects that are instances of entity types. These objects can be bound directly to controls, and this binding supports updates. This means that changes to data in a control, such as a row in a , automatically get saved to the database when the method is called. +- Binding data to controls. + + When you query the conceptual model, the [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] returns the data as objects that are instances of entity types. These objects can be bound directly to controls, and this binding supports updates. This means that changes to data in a control, such as a row in a , automatically get saved to the database when the method is called. - If your application enumerates the results of a query to display data in a or other type of control that supports data binding, you can modify your application to bind the control to the result of an . + If your application enumerates the results of a query to display data in a or other type of control that supports data binding, you can modify your application to bind the control to the result of an . - For more information, see [Binding Objects to Controls](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb738469(v=vs.100)). + For more information, see [Binding Objects to Controls](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb738469(v=vs.100)). - [!INCLUDE[vstecasp](../../../../../includes/vstecasp-md.md)] data source controls. - The [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] includes a data source control designed to simplify data binding in [!INCLUDE[vstecasp](../../../../../includes/vstecasp-md.md)] Web applications. For more information, see [EntityDataSource Web Server Control Overview](https://docs.microsoft.com/previous-versions/aspnet/cc488502(v=vs.100)). +- [!INCLUDE[vstecasp](../../../../../includes/vstecasp-md.md)] data source controls. + + The [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] includes a data source control designed to simplify data binding in [!INCLUDE[vstecasp](../../../../../includes/vstecasp-md.md)] Web applications. For more information, see [EntityDataSource Web Server Control Overview](https://docs.microsoft.com/previous-versions/aspnet/cc488502(v=vs.100)). ## Other Considerations The following are considerations that may apply when you migrate specific types of applications to the Entity Framework. - Applications that expose data services. - Web services and applications that are based on the Windows Communication Foundation (WCF) expose data from an underlying data source by using an XML request/response messaging format. The [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] supports the serialization of entity objects by using binary, XML, or WCF data contract serialization. Binary and WCF serialization both support full serialization of object graphs. For more information, see [Building N-Tier Applications](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb896304(v=vs.100)). +- Applications that expose data services. + + Web services and applications that are based on the Windows Communication Foundation (WCF) expose data from an underlying data source by using an XML request/response messaging format. The [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] supports the serialization of entity objects by using binary, XML, or WCF data contract serialization. Binary and WCF serialization both support full serialization of object graphs. For more information, see [Building N-Tier Applications](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb896304(v=vs.100)). - Applications that use XML data. - Object serialization enables you to create [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] data services. These services provide data to applications that consume XML data, such as AJAX-based Internet applications. In these cases, consider using [!INCLUDE[ssAstoria](../../../../../includes/ssastoria-md.md)]. These data services are based on the Entity Data Model and provide dynamic access to entity data by using standard Representational State Transfer (REST) HTTP actions, such as GET, PUT, and POST. For more information, see [WCF Data Services 4.5](../../../../../docs/framework/data/wcf/index.md). +- Applications that use XML data. + + Object serialization enables you to create [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] data services. These services provide data to applications that consume XML data, such as AJAX-based Internet applications. In these cases, consider using [!INCLUDE[ssAstoria](../../../../../includes/ssastoria-md.md)]. These data services are based on the Entity Data Model and provide dynamic access to entity data by using standard Representational State Transfer (REST) HTTP actions, such as GET, PUT, and POST. For more information, see [WCF Data Services 4.5](../../../../../docs/framework/data/wcf/index.md). - The [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] does not support a native-XML data type. This means that when an entity is mapped to a table with an XML column, the equivalent entity property for the XML column is a string. Objects can be disconnected and serialized as XML. For more information, see [Serializing Objects](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb738446(v=vs.100)). + The [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] does not support a native-XML data type. This means that when an entity is mapped to a table with an XML column, the equivalent entity property for the XML column is a string. Objects can be disconnected and serialized as XML. For more information, see [Serializing Objects](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb738446(v=vs.100)). - If your application requires the ability to query XML data, you can still take advantage of the benefits of LINQ queries by using LINQ to XML. For more information, see [LINQ to XML](https://docs.microsoft.com/previous-versions/visualstudio/visual-studio-2012/bb387098(v=vs.110)). + If your application requires the ability to query XML data, you can still take advantage of the benefits of LINQ queries by using LINQ to XML. For more information, see [LINQ to XML (C#)](../../../../csharp/programming-guide/concepts/linq/linq-to-xml.md) or [LINQ to XML (Visual Basic)](../../../../visual-basic/programming-guide/concepts/linq/linq-to-xml.md). - Applications that maintain state. - [!INCLUDE[vstecasp](../../../../../includes/vstecasp-md.md)] Web applications must frequently maintain the state of a Web page or of a user session. Objects in an instance can be stored in the client view state or in the session state on the server, and later retrieved and reattached to a new object context. For more information, see [Attaching and Detaching Objects](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb896271(v=vs.100)). +- Applications that maintain state. + + [!INCLUDE[vstecasp](../../../../../includes/vstecasp-md.md)] Web applications must frequently maintain the state of a Web page or of a user session. Objects in an instance can be stored in the client view state or in the session state on the server, and later retrieved and reattached to a new object context. For more information, see [Attaching and Detaching Objects](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb896271(v=vs.100)). ## See also - [Deployment Considerations](../../../../../docs/framework/data/adonet/ef/deployment-considerations.md) diff --git a/docs/framework/data/adonet/ef/performance-considerations.md b/docs/framework/data/adonet/ef/performance-considerations.md index 0efe4d573ceb2..f3fcee3c445dc 100644 --- a/docs/framework/data/adonet/ef/performance-considerations.md +++ b/docs/framework/data/adonet/ef/performance-considerations.md @@ -12,13 +12,13 @@ This topic describes performance characteristics of the ADO.NET Entity Framework |Operation|Relative Cost|Frequency|Comments| |---------------|-------------------|---------------|--------------| |Loading metadata|Moderate|Once in each application domain.|Model and mapping metadata used by the Entity Framework is loaded into a . This metadata is cached globally and is available to other instances of in the same application domain.| -|Opening the database connection|Moderate1|As needed.|Because an open connection to the database consumes a valuable resource, the [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] opens and closes the database connection only as needed. You can also explicitly open the connection. For more information, see [Managing Connections and Transactions](https://msdn.microsoft.com/library/b6659d2a-9a45-4e98-acaa-d7a8029e5b99).| -|Generating views|High|Once in each application domain. (Can be pre-generated.)|Before the Entity Framework can execute a query against a conceptual model or save changes to the data source, it must generate a set of local query views to access the database. Because of the high cost of generating these views, you can pre-generate the views and add them to the project at design-time. For more information, see [How to: Pre-Generate Views to Improve Query Performance](https://msdn.microsoft.com/library/b18a9d16-e10b-4043-ba91-b632f85a2579).| +|Opening the database connection|Moderate1|As needed.|Because an open connection to the database consumes a valuable resource, the [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] opens and closes the database connection only as needed. You can also explicitly open the connection. For more information, see [Managing Connections and Transactions](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb896325(v=vs.100)).| +|Generating views|High|Once in each application domain. (Can be pre-generated.)|Before the Entity Framework can execute a query against a conceptual model or save changes to the data source, it must generate a set of local query views to access the database. Because of the high cost of generating these views, you can pre-generate the views and add them to the project at design-time. For more information, see [How to: Pre-Generate Views to Improve Query Performance](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb896240(v=vs.100)).| |Preparing the query|Moderate2|Once for each unique query.|Includes the costs to compose the query command, generate a command tree based on model and mapping metadata, and define the shape of the returned data. Because now both Entity SQL query commands and LINQ queries are cached, later executions of the same query take less time. You can still use compiled LINQ queries to reduce this cost in later executions and compiled queries can be more efficient than LINQ queries that are automatically cached. For more information, see [Compiled Queries (LINQ to Entities)](../../../../../docs/framework/data/adonet/ef/language-reference/compiled-queries-linq-to-entities.md). For general information about LINQ query execution, see [LINQ to Entities](../../../../../docs/framework/data/adonet/ef/language-reference/linq-to-entities.md). **Note:** LINQ to Entities queries that apply the `Enumerable.Contains` operator to in-memory collections are not automatically cached. Also parameterizing in-memory collections in compiled LINQ queries is not allowed.| |Executing the query|Low2|Once for each query.|The cost of executing the command against the data source by using the ADO.NET data provider. Because most data sources cache query plans, later executions of the same query may take even less time.| |Loading and validating types|Low3|Once for each instance.|Types are loaded and validated against the types that the conceptual model defines.| -|Tracking|Low3|Once for each object that a query returns. 4|If a query uses the merge option, this stage does not affect performance.

If the query uses the , , or merge option, query results are tracked in the . An is generated for each tracked object that the query returns and is used to create an in the . If an existing can be found for the , the existing object is returned. If the , or option is used, the object is updated before it is returned.

For more information, see [Identity Resolution, State Management, and Change Tracking](https://msdn.microsoft.com/library/3bd49311-0e72-4ea4-8355-38fe57036ba0).| -|Materializing the objects|Moderate3|Once for each object that a query returns. 4|The process of reading the returned object and creating objects and setting property values that are based on the values in each instance of the class. If the object already exists in the and the query uses the or merge options, this stage does not affect performance. For more information, see [Identity Resolution, State Management, and Change Tracking](https://msdn.microsoft.com/library/3bd49311-0e72-4ea4-8355-38fe57036ba0).| +|Tracking|Low3|Once for each object that a query returns. 4|If a query uses the merge option, this stage does not affect performance.

If the query uses the , , or merge option, query results are tracked in the . An is generated for each tracked object that the query returns and is used to create an in the . If an existing can be found for the , the existing object is returned. If the , or option is used, the object is updated before it is returned.

For more information, see [Identity Resolution, State Management, and Change Tracking](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb896269(v=vs.100)).| +|Materializing the objects|Moderate3|Once for each object that a query returns. 4|The process of reading the returned object and creating objects and setting property values that are based on the values in each instance of the class. If the object already exists in the and the query uses the or merge options, this stage does not affect performance. For more information, see [Identity Resolution, State Management, and Change Tracking](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb896269(v=vs.100)).| 1 When a data source provider implements connection pooling, the cost of opening a connection is distributed across the pool. The .NET Provider for SQL Server supports connection pooling. @@ -35,7 +35,7 @@ This topic describes performance characteristics of the ADO.NET Entity Framework Because queries can be resource intensive, consider at what point in your code and on what computer a query is executed. #### Deferred versus immediate execution - When you create an or LINQ query, the query may not be executed immediately. Query execution is deferred until the results are needed, such as during a `foreach` (C#) or `For Each` (Visual Basic) enumeration or when it is assigned to fill a collection. Query execution begins immediately when you call the method on an or when you call a LINQ method that returns a singleton query, such as or . For more information, see [Object Queries](https://msdn.microsoft.com/library/0768033c-876f-471d-85d5-264884349276) and [Query Execution (LINQ to Entities)](../../../../../docs/framework/data/adonet/ef/language-reference/query-execution.md). + When you create an or LINQ query, the query may not be executed immediately. Query execution is deferred until the results are needed, such as during a `foreach` (C#) or `For Each` (Visual Basic) enumeration or when it is assigned to fill a collection. Query execution begins immediately when you call the method on an or when you call a LINQ method that returns a singleton query, such as or . For more information, see [Object Queries](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb896241(v=vs.100)) and [Query Execution (LINQ to Entities)](../../../../../docs/framework/data/adonet/ef/language-reference/query-execution.md). #### Client-side execution of LINQ queries Although the execution of a LINQ query occurs on the computer that hosts the data source, some parts of a LINQ query may be evaluated on the client computer. For more information, see the Store Execution section of [Query Execution (LINQ to Entities)](../../../../../docs/framework/data/adonet/ef/language-reference/query-execution.md). @@ -52,7 +52,7 @@ This topic describes performance characteristics of the ADO.NET Entity Framework - Queries against a conceptual model that seem simple may result in the execution of more complex queries against the data source. This can occur because the Entity Framework translates a query against a conceptual model into an equivalent query against the data source. When a single entity set in the conceptual model maps to more than one table in the data source, or when a relationship between entities is mapped to a join table, the query command executed against the data source query may require one or more joins. > [!NOTE] - > Use the method of the or classes to view the commands that are executed against the data source for a given query. For more information, see [How to: View the Store Commands](https://msdn.microsoft.com/library/f9771c6e-3b62-4b24-a5d4-55d68e14fa79). + > Use the method of the or classes to view the commands that are executed against the data source for a given query. For more information, see [How to: View the Store Commands](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb896348(v=vs.100)). - Nested Entity SQL queries may create joins on the server and can return a large number of rows. @@ -66,7 +66,7 @@ This topic describes performance characteristics of the ADO.NET Entity Framework In addition, such queries cause the query pipeline to generate a single query with duplication of objects across nested queries. Because of this, a single column may be duplicated multiple times. On some databases, including SQL Server, this can cause the TempDB table to grow very large, which can decrease server performance. Care should be taken when you execute nested queries. -- Any queries that return a large amount of data can cause decreased performance if the client is performing operations that consume resources in a way that is proportional to the size of the result set. In such cases, you should consider limiting the amount of data returned by the query. For more information, see [How to: Page Through Query Results](https://msdn.microsoft.com/library/ffc0f920-e7de-42e0-9b12-ef356421d030). +- Any queries that return a large amount of data can cause decreased performance if the client is performing operations that consume resources in a way that is proportional to the size of the result set. In such cases, you should consider limiting the amount of data returned by the query. For more information, see [How to: Page Through Query Results](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb738702(v=vs.100)). Any commands automatically generated by the Entity Framework may be more complex than similar commands written explicitly by a database developer. If you need explicit control over the commands executed against your data source, consider defining a mapping to a table-valued function or stored procedure. @@ -80,15 +80,15 @@ This topic describes performance characteristics of the ADO.NET Entity Framework 2. Call the `Load` method on the navigation property that the object exposes. -3. Set the option on the to `true`. Note that this is done automatically when you generate object-layer code with the [Entity Data Model Designer](https://msdn.microsoft.com/library/4ccd7ad6-b934-4f7c-82a0-cfd2d4a95faf). For more information see [Generated Code Overview](https://msdn.microsoft.com/library/6a88ea38-6a90-4107-bc33-531b79ce5b6a). +3. Set the option on the to `true`. Note that this is done automatically when you generate object-layer code with the [Entity Data Model Designer](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/cc716685(v=vs.100)). For more information see [Generated Code Overview](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/cc982041(v=vs.100)). - When you consider which option to use, be aware that there is a tradeoff between the number of requests against the database and the amount of data returned in a single query. For more information, see [Loading Related Objects](https://msdn.microsoft.com/library/452347d2-7b3b-44cd-9001-231299a28cb1). + When you consider which option to use, be aware that there is a tradeoff between the number of requests against the database and the amount of data returned in a single query. For more information, see [Loading Related Objects](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb896272(v=vs.100)). #### Using query paths Query paths define the graph of objects that a query returns. When you define a query path, only a single request against the database is required to return all objects that the path defines. Using query paths can result in complex commands being executed against the data source from seemingly simple object queries. This occurs because one or more joins are required to return related objects in a single query. This complexity is greater in queries against a complex entity model, such as an entity with inheritance or a path that includes many-to-many relationships. > [!NOTE] -> Use the method to see the command that will be generated by an . For more information, see [How to: View the Store Commands](https://msdn.microsoft.com/library/f9771c6e-3b62-4b24-a5d4-55d68e14fa79). +> Use the method to see the command that will be generated by an . For more information, see [How to: View the Store Commands](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb896348(v=vs.100)). When a query path includes too many related objects or the objects contain too much row data, the data source might be unable to complete the query. This occurs if the query requires intermediate temporary storage that exceeds the capabilities of the data source. When this occurs, you can reduce the complexity of the data source query by explicitly loading related objects. @@ -110,15 +110,15 @@ This topic describes performance characteristics of the ADO.NET Entity Framework - An explicit transaction with an operation against a SQL Server 2000 database or other data source that always promote explicit transactions to the DTC. -- An explicit transaction with an operation against SQL Server 2005 when the connection is managed by the [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)]. This occurs because SQL Server 2005 promotes to a DTC whenever a connection is closed and reopened within a single transaction, which is the default behavior of the [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)]. This DTC promotion does not occur when using SQL Server 2008. To avoid this promotion when using SQL Server 2005, you must explicitly open and close the connection within the transaction. For more information, see [Managing Connections and Transactions](https://msdn.microsoft.com/library/b6659d2a-9a45-4e98-acaa-d7a8029e5b99). +- An explicit transaction with an operation against SQL Server 2005 when the connection is managed by the [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)]. This occurs because SQL Server 2005 promotes to a DTC whenever a connection is closed and reopened within a single transaction, which is the default behavior of the [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)]. This DTC promotion does not occur when using SQL Server 2008. To avoid this promotion when using SQL Server 2005, you must explicitly open and close the connection within the transaction. For more information, see [Managing Connections and Transactions](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb896325(v=vs.100)). - An explicit transaction is used when one or more operations are executed inside a transaction. For more information, see [Managing Connections and Transactions](https://msdn.microsoft.com/library/b6659d2a-9a45-4e98-acaa-d7a8029e5b99). + An explicit transaction is used when one or more operations are executed inside a transaction. For more information, see [Managing Connections and Transactions](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb896325(v=vs.100)). ## Strategies for Improving Performance You can improve the overall performance of queries in the Entity Framework by using the following strategies. #### Pre-generate views - Generating views based on an entity model is a significant cost the first time that an application executes a query. Use the EdmGen.exe utility to pre-generate views as a Visual Basic or C# code file that can be added to the project during design. You could also use the Text Template Transformation Toolkit to generate pre-compiled views. Pre-generated views are validated at runtime to ensure that they are consistent with the current version of the specified entity model. For more information, see [How to: Pre-Generate Views to Improve Query Performance](https://msdn.microsoft.com/library/b18a9d16-e10b-4043-ba91-b632f85a2579) and [Isolating Performance with Precompiled/Pre-generated Views in the Entity Framework 4](https://go.microsoft.com/fwlink/?LinkID=201337&clcid=0x409). + Generating views based on an entity model is a significant cost the first time that an application executes a query. Use the EdmGen.exe utility to pre-generate views as a Visual Basic or C# code file that can be added to the project during design. You could also use the Text Template Transformation Toolkit to generate pre-compiled views. Pre-generated views are validated at runtime to ensure that they are consistent with the current version of the specified entity model. For more information, see [How to: Pre-Generate Views to Improve Query Performance](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb896240(v=vs.100)). When working with very large models, the following consideration applies: @@ -128,15 +128,15 @@ This topic describes performance characteristics of the ADO.NET Entity Framework There is a cost required to track returned objects in the object context. Detecting changes to objects and ensuring that multiple requests for the same logical entity return the same object instance requires that objects be attached to an instance. If you do not plan to make updates or deletes to objects and do not require identity management, consider using the merge options when you execute queries. #### Return the correct amount of data - In some scenarios, specifying a query path using the method is much faster because it requires fewer round trips to the database. However, in other scenarios, additional round trips to the database to load related objects may be faster because the simpler queries with fewer joins result in less redundancy of data. Because of this, we recommend that you test the performance of various ways to retrieve related objects. For more information, see [Loading Related Objects](https://msdn.microsoft.com/library/452347d2-7b3b-44cd-9001-231299a28cb1). + In some scenarios, specifying a query path using the method is much faster because it requires fewer round trips to the database. However, in other scenarios, additional round trips to the database to load related objects may be faster because the simpler queries with fewer joins result in less redundancy of data. Because of this, we recommend that you test the performance of various ways to retrieve related objects. For more information, see [Loading Related Objects](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb896272(v=vs.100)). - To avoid returning too much data in a single query, consider paging the results of the query into more manageable groups. For more information, see [How to: Page Through Query Results](https://msdn.microsoft.com/library/ffc0f920-e7de-42e0-9b12-ef356421d030). + To avoid returning too much data in a single query, consider paging the results of the query into more manageable groups. For more information, see [How to: Page Through Query Results](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb738702(v=vs.100)). #### Limit the scope of the ObjectContext - In most cases, you should create an instance within a `using` statement (`Using…End Using` in Visual Basic). This can increase performance by ensuring that the resources associated with the object context are disposed automatically when the code exits the statement block. However, when controls are bound to objects managed by the object context, the instance should be maintained as long as the binding is needed and disposed of manually. For more information, see [Managing Connections and Transactions](https://msdn.microsoft.com/library/b6659d2a-9a45-4e98-acaa-d7a8029e5b99). + In most cases, you should create an instance within a `using` statement (`Using…End Using` in Visual Basic). This can increase performance by ensuring that the resources associated with the object context are disposed automatically when the code exits the statement block. However, when controls are bound to objects managed by the object context, the instance should be maintained as long as the binding is needed and disposed of manually. For more information, see [Managing Connections and Transactions](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb896325(v=vs.100)). #### Consider opening the database connection manually - When your application executes a series of object queries or frequently calls to persist create, update, and delete operations to the data source, the [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] must continuously open and close the connection to the data source. In these situations, consider manually opening the connection at the start of these operations and either closing or disposing of the connection when the operations are complete. For more information, see [Managing Connections and Transactions](https://msdn.microsoft.com/library/b6659d2a-9a45-4e98-acaa-d7a8029e5b99). + When your application executes a series of object queries or frequently calls to persist create, update, and delete operations to the data source, the [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] must continuously open and close the connection to the data source. In these situations, consider manually opening the connection at the start of these operations and either closing or disposing of the connection when the operations are complete. For more information, see [Managing Connections and Transactions](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb896325(v=vs.100)). ## Performance Data Some performance data for the Entity Framework is published in the following posts on the [ADO.NET team blog](https://go.microsoft.com/fwlink/?LinkId=91905): diff --git a/docs/framework/data/adonet/ef/provider-manifest-specification.md b/docs/framework/data/adonet/ef/provider-manifest-specification.md index 8bd17ea671be6..fffcf09bd1b82 100644 --- a/docs/framework/data/adonet/ef/provider-manifest-specification.md +++ b/docs/framework/data/adonet/ef/provider-manifest-specification.md @@ -85,7 +85,7 @@ public DbProviderManifest GetProviderManifest(string manifestToken); ``` #### Using a Provider Manifest Token - For the offline scenario, the token is picked from SSDL representation. The SSDL allows you to specify a ProviderManifestToken (see [Schema Element (SSDL)](https://msdn.microsoft.com/library/fec75ae4-7f16-4421-9265-9dac61509222) for more information). For example, if a connection cannot be opened, the SSDL has a provider manifest token that specifies information about the manifest. + For the offline scenario, the token is picked from SSDL representation. The SSDL allows you to specify a ProviderManifestToken (see [Schema Element (SSDL)](/ef/ef6/modeling/designer/advanced/edmx/ssdl-spec#schema-element-ssdl) for more information). For example, if a connection cannot be opened, the SSDL has a provider manifest token that specifies information about the manifest. ``` public DbProviderManifest GetProviderManifest(string manifestToken); diff --git a/docs/framework/data/adonet/ef/resources.md b/docs/framework/data/adonet/ef/resources.md index 69fb767b2b3af..bdd5ddd62edbd 100644 --- a/docs/framework/data/adonet/ef/resources.md +++ b/docs/framework/data/adonet/ef/resources.md @@ -25,4 +25,4 @@ The following external resources provide information and support for creating En - [Entity Framework Overview](../../../../../docs/framework/data/adonet/ef/overview.md) - [Getting Started](../../../../../docs/framework/data/adonet/ef/getting-started.md) - [Entity Framework Terminology](../../../../../docs/framework/data/adonet/ef/terminology.md) -- [ADO.NET Entity Data Model Tools](https://msdn.microsoft.com/library/91076853-0881-421b-837a-f582f36be527) +- [ADO.NET Entity Data Model Tools](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb399249(v=vs.100)) diff --git a/docs/framework/data/adonet/ef/security-considerations.md b/docs/framework/data/adonet/ef/security-considerations.md index 54832ab2da4f5..c4411d2e40836 100644 --- a/docs/framework/data/adonet/ef/security-considerations.md +++ b/docs/framework/data/adonet/ef/security-considerations.md @@ -32,7 +32,7 @@ This topic describes security considerations that are specific to developing, de - Encrypt configuration file sections using protected configuration. - ASP.NET provides a feature called protected configuration that enables you to encrypt sensitive information in a configuration file. Although primarily designed for ASP.NET, you can also use protected configuration to encrypt sections of configuration files in Windows applications. For a detailed description of the new protected configuration capabilities, see [Encrypting Configuration Information Using Protected Configuration](https://msdn.microsoft.com/library/51cdfe5b-9d82-458c-94ff-c551c4f38ed1). + ASP.NET provides a feature called protected configuration that enables you to encrypt sensitive information in a configuration file. Although primarily designed for ASP.NET, you can also use protected configuration to encrypt sections of configuration files in Windows applications. For a detailed description of the new protected configuration capabilities, see [Encrypting Configuration Information Using Protected Configuration](https://docs.microsoft.com/previous-versions/aspnet/53tyfkaw(v=vs.100)). - Store connection strings in secured configuration files. @@ -92,7 +92,7 @@ This topic describes security considerations that are specific to developing, de SQL injection attacks can be performed in [!INCLUDE[esql](../../../../../includes/esql-md.md)] by supplying malicious input to values that are used in a query predicate and in parameter names. To avoid the risk of SQL injection, you should never combine user input with [!INCLUDE[esql](../../../../../includes/esql-md.md)] command text. - [!INCLUDE[esql](../../../../../includes/esql-md.md)] queries accept parameters everywhere that literals are accepted. You should use parameterized queries instead of injecting literals from an external agent directly into the query. You should also consider using query builder methods to safely construct [Entity SQL](https://msdn.microsoft.com/library/05685434-05e6-41c2-8d5e-8933b88a40b0). + [!INCLUDE[esql](../../../../../includes/esql-md.md)] queries accept parameters everywhere that literals are accepted. You should use parameterized queries instead of injecting literals from an external agent directly into the query. You should also consider using [query builder methods](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb896238(v=vs.100)) to safely construct Entity SQL. - [!INCLUDE[linq_entities](../../../../../includes/linq-entities-md.md)] injection attacks: @@ -126,7 +126,7 @@ This topic describes security considerations that are specific to developing, de The following security considerations apply when generating and working with entity types. #### Do not share an ObjectContext across application domains. - Sharing an with more than one application domain may expose information in the connection string. Instead, you should transfer serialized objects or object graphs to the other application domain and then attach those objects to an in that application domain. For more information, see [Serializing Objects](https://msdn.microsoft.com/library/06c77f9b-5b2e-4c78-b3e3-8c148ba0ea99). + Sharing an with more than one application domain may expose information in the connection string. Instead, you should transfer serialized objects or object graphs to the other application domain and then attach those objects to an in that application domain. For more information, see [Serializing Objects](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb738446(v=vs.100)). #### Prevent type safety violations. If type safety is violated, the [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] cannot guarantee the integrity of data in objects. Type safety violations could occur if you allow untrusted applications to run with full-trust code access security. diff --git a/docs/framework/data/adonet/ef/sqlclient-for-the-entity-framework.md b/docs/framework/data/adonet/ef/sqlclient-for-the-entity-framework.md index 47ffe2b1324d8..e53b28fca92df 100644 --- a/docs/framework/data/adonet/ef/sqlclient-for-the-entity-framework.md +++ b/docs/framework/data/adonet/ef/sqlclient-for-the-entity-framework.md @@ -12,7 +12,7 @@ This section describes the .NET Framework Data Provider for SQL Server (SqlClien To use SqlClient, assign the string "System.Data.SqlClient" to the `Provider` attribute of the `Schema` element. ## ProviderManifestToken Schema Attribute - `ProviderManifestToken` is a required attribute of the `Schema` element in SSDL. This token is used to load the provider manifest for offline scenarios. For more information about `ProviderManifestToken` attribute, see [Schema Element (SSDL)](https://msdn.microsoft.com/library/fec75ae4-7f16-4421-9265-9dac61509222). + `ProviderManifestToken` is a required attribute of the `Schema` element in SSDL. This token is used to load the provider manifest for offline scenarios. For more information about `ProviderManifestToken` attribute, see [Schema Element (SSDL)](/ef/ef6/modeling/designer/advanced/edmx/ssdl-spec#schema-element-ssdl). SqlClient can be used as a data provider for different versions of SQL Server. These versions have different capabilities. For example, [!INCLUDE[ssVersion2000](../../../../../includes/ssversion2000-md.md)] does not support `varchar(max)` and `nvarchar(max)` types that were introduced with [!INCLUDE[ssVersion2005](../../../../../includes/ssversion2005-md.md)]. @@ -23,7 +23,7 @@ This section describes the .NET Framework Data Provider for SQL Server (SqlClien |2000|2005|2008| > [!NOTE] -> Starting with Visual Studio 2010, the [ADO.NET Entity Data Model Tools](https://msdn.microsoft.com/library/91076853-0881-421b-837a-f582f36be527) do not support SQL Server 2000. +> Starting with Visual Studio 2010, the [ADO.NET Entity Data Model Tools](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb399249(v=vs.100)) do not support SQL Server 2000. ## Provider Namespace Name All providers must specify a namespace. This property tells the Entity Framework which prefix is used by the provider for specific constructs, such as types and functions. The namespace for SqlClient provider manifests is `SqlServer`. For more information about namespaces, see [Namespaces](../../../../../docs/framework/data/adonet/ef/language-reference/namespaces-entity-sql.md). diff --git a/docs/framework/data/adonet/ef/terminology.md b/docs/framework/data/adonet/ef/terminology.md index 226ab1ba97dcc..a3e1b4d2ed809 100644 --- a/docs/framework/data/adonet/ef/terminology.md +++ b/docs/framework/data/adonet/ef/terminology.md @@ -8,61 +8,61 @@ This topic defines terms frequently referenced in [!INCLUDE[adonet_ef](../../../ |Term|Definition| |----------|----------------| -|association|The definition of a relationship between entity types.

For more information, see [Association Element (CSDL)](https://msdn.microsoft.com/library/c305169a-8af7-432f-9ba7-800a163aed41) and [association type](../../../../../docs/framework/data/adonet/association-type.md).| -|association set|A logical container for instances of associations of the same type.

For more information, see [AssociationSet Element (CSDL)](https://msdn.microsoft.com/library/512cbb75-cebe-4f3f-970d-3419deeff684) and [association set](../../../../../docs/framework/data/adonet/association-set.md).| +|association|The definition of a relationship between entity types.

For more information, see [Association Element (CSDL)](/ef/ef6/modeling/designer/advanced/edmx/csdl-spec#association-element-csdl) and [association type](../../../../../docs/framework/data/adonet/association-type.md).| +|association set|A logical container for instances of associations of the same type.

For more information, see [AssociationSet Element (CSDL)](/ef/ef6/modeling/designer/advanced/edmx/csdl-spec#associationset-element-csdl) and [association set](../../../../../docs/framework/data/adonet/association-set.md).| |Code First|Starting with the Entity Framework 4.1 you can create a model programmatically using Code First development. There are two different scenarios for Code First development. In both cases, the developer defines a model by coding .NET Framework class definitions, and then optionally specifies additional mapping or configuration by using Data Annotations or the fluent API.

Note, that Code First development is part of the [Entity Framework 5.0](https://go.microsoft.com/fwlink/?LinkId=234900). The Entity Framework 5.0 is not part of the .NET Framework, but is built on .NET Framework 4.5. The Entity Framework 5.0 is available as the [‘Entity Framework’](https://go.microsoft.com/fwlink/?LinkID=215714)[NuGet](https://go.microsoft.com/fwlink/?LinkId=232488) package. For more information, see [Entity Framework Releases and Versioning](https://go.microsoft.com/fwlink/?LinkId=234899).| |command tree|A common, programmatic representation of all [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] queries that are composed of one or more expressions.

For more information, see [Entity Framework Overview](../../../../../docs/framework/data/adonet/ef/overview.md).| -|complex type|A [!INCLUDE[dnprdnshort](../../../../../includes/dnprdnshort-md.md)] class that represents a complex property as defined in the conceptual model. Complex types enable scalar properties to be organized within entities. Complex objects are instances of complex types. For more information, see [ComplexType Element (CSDL)](https://msdn.microsoft.com/library/f1c2f311-9889-4b87-abd8-a94f322052e3) and [complex type](../../../../../docs/framework/data/adonet/complex-type.md).| -|ComplexType|The specification for a data type that represents a non-scalar property of an entity type that does not have a key property.

For more information, see [ComplexType Element (CSDL)](https://msdn.microsoft.com/library/f1c2f311-9889-4b87-abd8-a94f322052e3) and [complex type](../../../../../docs/framework/data/adonet/complex-type.md).| +|complex type|A [!INCLUDE[dnprdnshort](../../../../../includes/dnprdnshort-md.md)] class that represents a complex property as defined in the conceptual model. Complex types enable scalar properties to be organized within entities. Complex objects are instances of complex types. For more information, see [ComplexType Element (CSDL)](/ef/ef6/modeling/designer/advanced/edmx/csdl-spec#complextype-element-csdl) and [complex type](../../../../../docs/framework/data/adonet/complex-type.md).| +|ComplexType|The specification for a data type that represents a non-scalar property of an entity type that does not have a key property.

For more information, see [ComplexType Element (CSDL)](/ef/ef6/modeling/designer/advanced/edmx/csdl-spec#complextype-element-csdl) and [complex type](../../../../../docs/framework/data/adonet/complex-type.md).| |conceptual model|An abstract specification for the entity types, complex types, associations, entity containers, entity sets, and association sets in the domain of an application in the [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)]. The conceptual model is defined in CSDL in the .csdl file.

For more information, see [Modeling and Mapping](../../../../../docs/framework/data/adonet/ef/modeling-and-mapping.md).| |.csdl file|An XML file that contains the conceptual model, expressed in CSDL.| |conceptual schema definition language (CSDL)|An XML-based language that is used to define the entity types, associations, entity containers, entity sets, and association sets of a conceptual model.

For more information, see [CSDL Specification](../../../../../docs/framework/data/adonet/ef/language-reference/csdl-specification.md).| -|container|A logical grouping of entity and association sets.

For more information, see [EntityContainer Element (CSDL)](https://msdn.microsoft.com/library/06d03ecb-3b7a-4e7f-95d5-b95307d47a27) and [entity container](../../../../../docs/framework/data/adonet/entity-container.md).| +|container|A logical grouping of entity and association sets.

For more information, see [EntityContainer Element (CSDL)](/ef/ef6/modeling/designer/advanced/edmx/csdl-spec#entitycontainer-element-csdl) and [entity container](../../../../../docs/framework/data/adonet/entity-container.md).| |concurrency|A process that allows multiple users to access and change shared data at the same time. By default, the [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] implements an optimistic concurrency model.| -|direction|Refers to the asymmetrical nature of some associations. Direction is specified with `FromRole` and `ToRole` attributes of a `NavigationProperty` or `ReferentialConstraint` element in a schema.

For more information, see [NavigationProperty Element (CSDL)](https://msdn.microsoft.com/library/5829a238-a50e-4c81-901d-7b54fc00f27e) and [navigation property](../../../../../docs/framework/data/adonet/navigation-property.md).| +|direction|Refers to the asymmetrical nature of some associations. Direction is specified with `FromRole` and `ToRole` attributes of a `NavigationProperty` or `ReferentialConstraint` element in a schema.

For more information, see [NavigationProperty Element (CSDL)](/ef/ef6/modeling/designer/advanced/edmx/csdl-spec#navigationproperty-element-csdl) and [navigation property](../../../../../docs/framework/data/adonet/navigation-property.md).| |eager loading|The process of loading a specific set of related objects along with the objects that were explicitly requested in the query.| -|.edmx file|An XML file that contains the conceptual model (in CSDL), the storage model (in SSDL), and the mappings between them (in MSL). The .edmx file is created by the [!INCLUDE[adonet_edm](../../../../../includes/adonet-edm-md.md)] Tools. For more information, see [.edmx File Overview](https://msdn.microsoft.com/library/f4c8e7ce-1db6-417e-9759-15f8b55155d4).| -|end|A participating entity in an association.

For more information, see [End Element (CSDL)](https://msdn.microsoft.com/library/04f3c141-95bc-424b-989b-1c071b449e7c) and [association end](../../../../../docs/framework/data/adonet/association-end.md).| -|entity|A concept in the domain of an application from which a data type is defined.

For more information, see [EntityType Element (CSDL)](https://msdn.microsoft.com/library/19562e9f-fd70-4b59-bc15-3e289cbb6054) and [entity type](../../../../../docs/framework/data/adonet/entity-type.md).| +|.edmx file|An XML file that contains the conceptual model (in CSDL), the storage model (in SSDL), and the mappings between them (in MSL). The .edmx file is created by the [!INCLUDE[adonet_edm](../../../../../includes/adonet-edm-md.md)] Tools. For more information, see [.edmx File Overview](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/cc982042(v=vs.100)).| +|end|A participating entity in an association.

For more information, see [End Element (CSDL)](/ef/ef6/modeling/designer/advanced/edmx/csdl-spec#end-element-csdl) and [association end](../../../../../docs/framework/data/adonet/association-end.md).| +|entity|A concept in the domain of an application from which a data type is defined.

For more information, see [EntityType Element (CSDL)](/ef/ef6/modeling/designer/advanced/edmx/csdl-spec#entitytype-element-csdl) and [entity type](../../../../../docs/framework/data/adonet/entity-type.md).| |EntityClient|A storage-independent [!INCLUDE[vstecado](../../../../../includes/vstecado-md.md)] data provider that contains classes such as `EntityConnection`, `EntityCommand`, and `EntityDataReader`. Works with [!INCLUDE[esql](../../../../../includes/esql-md.md)] and connects to storage specific [!INCLUDE[vstecado](../../../../../includes/vstecado-md.md)] data providers, such as `SqlClient`.

For more information, see [EntityClient Provider for the Entity Framework](../../../../../docs/framework/data/adonet/ef/entityclient-provider-for-the-entity-framework.md).| -|entity container|Specifies entity sets and association sets that will be implemented in a specified namespace.

For more information, see [EntityContainer Element (CSDL)](https://msdn.microsoft.com/library/06d03ecb-3b7a-4e7f-95d5-b95307d47a27) and [entity container](../../../../../docs/framework/data/adonet/entity-container.md).| +|entity container|Specifies entity sets and association sets that will be implemented in a specified namespace.

For more information, see [EntityContainer Element (CSDL)](/ef/ef6/modeling/designer/advanced/edmx/csdl-spec#entitycontainer-element-csdl) and [entity container](../../../../../docs/framework/data/adonet/entity-container.md).| |Entity Data Model (EDM)|A set of concepts that describe the structure of data, as entities and relationships, regardless of its stored form.

For more information, see [Entity Data Model](../../../../../docs/framework/data/adonet/entity-data-model.md).| |Entity Framework|A set of technologies that supports development of data-oriented software applications by enabling developers to work with conceptual models that are mapped to logical schemas in data sources.

For more information, see [Entity Framework Overview](../../../../../docs/framework/data/adonet/ef/overview.md).| -|entity set|A logical container for entities of a given type and its subtypes. Entity sets are mapped to tables in a database.

For more information, see [EntitySet Element (CSDL)](https://msdn.microsoft.com/library/ec56db77-718d-4c0e-adc9-f1d33c896287) and [entity set](../../../../../docs/framework/data/adonet/entity-set.md).| +|entity set|A logical container for entities of a given type and its subtypes. Entity sets are mapped to tables in a database.

For more information, see [EntitySet Element (CSDL)](/ef/ef6/modeling/designer/advanced/edmx/csdl-spec#entityset-element-csdl) and [entity set](../../../../../docs/framework/data/adonet/entity-set.md).| |Entity SQL|A storage-independent dialect of SQL that works directly with conceptual entity schemas and that supports conceptual model concepts such as inheritance and relationships.

For more information, see [Entity SQL Language](../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-language.md).| |entity type|A [!INCLUDE[dnprdnshort](../../../../../includes/dnprdnshort-md.md)] class that represents an entity as it is defined in the conceptual model. Entity types may have scalar, complex, and navigation properties. Objects are instances of entity types. For more information, see [Working with Objects](../../../../../docs/framework/data/adonet/ef/working-with-objects.md).| -|EntityType|The specification for a data type that includes a key and a named set of properties and represents a top-level item in a conceptual model or storage model.

For more information, see [EntityType Element (CSDL)](https://msdn.microsoft.com/library/19562e9f-fd70-4b59-bc15-3e289cbb6054) and [entity type](../../../../../docs/framework/data/adonet/entity-type.md).| +|EntityType|The specification for a data type that includes a key and a named set of properties and represents a top-level item in a conceptual model or storage model.

For more information, see [EntityType Element (CSDL)](/ef/ef6/modeling/designer/advanced/edmx/csdl-spec#entitytype-element-csdl) and [entity type](../../../../../docs/framework/data/adonet/entity-type.md).| |explicit loading|When objects are returned by a query, related objects are not loaded at the same time. By default, they are not loaded until explicitly requested using the `Load` method on a navigation property.| |foreign key association|An association between entities that is managed through foreign key properties.| |identifying relationship|A relationship where the primary key of the principal entity is part of the primary key of the dependent entity. In this kind of relationship, the dependent entity cannot exist without the principal entity.| |independent association|An association between entities that is represented and tracked by an independent object.| -|key|The attribute of an entity type that specifies which property or set of properties is used to identify unique instances of the entity type. Represented in the object layer by the class.

For more information, see [Key Element (CSDL)](https://msdn.microsoft.com/library/0cdb1402-dbc7-4a04-a11e-5729cdf7431b) and [entity key](../../../../../docs/framework/data/adonet/entity-key.md).| +|key|The attribute of an entity type that specifies which property or set of properties is used to identify unique instances of the entity type. Represented in the object layer by the class.

For more information, see [Key Element (CSDL)](/ef/ef6/modeling/designer/advanced/edmx/csdl-spec#key-element-csdl) and [entity key](../../../../../docs/framework/data/adonet/entity-key.md).| |lazy loading|When objects are returned by a query, related objects are not loaded at the same time. Instead they are loaded automatically when the navigation property is accessed.| |[!INCLUDE[linq_entities](../../../../../includes/linq-entities-md.md)]|A query syntax that defines a set of query operators that allow traversal, filter, and projection operations to be expressed in a direct, declarative way in Visual C# and Visual Basic.

For more information, see [LINQ to Entities](../../../../../docs/framework/data/adonet/ef/language-reference/linq-to-entities.md).| |mapping|A specification of the correspondences between items in a conceptual model and items in a storage model.

For more information, see [MSL Specification](../../../../../docs/framework/data/adonet/ef/language-reference/msl-specification.md).| |.msl file|An XML file that contains the mapping between the conceptual model and the storage model, expressed in MSL.| |mapping specification language (MSL)|An XML-based language that is used to map items defined in a conceptual model to items in a storage model.

For more information, see [MSL Specification](../../../../../docs/framework/data/adonet/ef/language-reference/msl-specification.md).| -|modification functions|Stored procedures that are used to insert, update, and delete data that is in the data source. These functions are used in place of [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] generated commands. Modification functions are defined by the `Function` element in the storage model. The [ModificationFunctionMapping](https://msdn.microsoft.com/library/b44b5b13-9937-448b-ba36-7a0cfefea782) element maps these modification functions to insert, update, and delete operations against entities that are defined in the conceptual model.| -|multiplicity|The number of entities that can exist on each side of a relationship, as defined by an association. Also known as cardinality.

For more information, see [End Element (CSDL)](https://msdn.microsoft.com/library/04f3c141-95bc-424b-989b-1c071b449e7c) and [association end](../../../../../docs/framework/data/adonet/association-end.md).| -|multiple entity sets per type|The ability for an entity type to be defined in more than one entity set.

For more information, see [EntitySet Element (CSDL)](https://msdn.microsoft.com/library/ec56db77-718d-4c0e-adc9-f1d33c896287) and [How to: Define a Model with Multiple Entity Sets per Type](https://msdn.microsoft.com/library/61aa4fca-5ac0-4f47-9bc8-46e8c2965ef7).| -|navigation property|A property of an entity type that represents a relationship to another entity type, as defined by an association. Navigation properties are used to return related objects as an or an , depending on the multiplicity at the other end of the association.

For more information, see [NavigationProperty Element (CSDL)](https://msdn.microsoft.com/library/5829a238-a50e-4c81-901d-7b54fc00f27e) and [navigation property](../../../../../docs/framework/data/adonet/navigation-property.md).| -|query path|A string representation of a path that specifies which related objects to return when an object query is executed. A query path is defined by calling the method on an .

For more information, see [Loading Related Objects](https://msdn.microsoft.com/library/452347d2-7b3b-44cd-9001-231299a28cb1).| +|modification functions|Stored procedures that are used to insert, update, and delete data that is in the data source. These functions are used in place of [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] generated commands. Modification functions are defined by the `Function` element in the storage model. The [ModificationFunctionMapping](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/cc716778(v=vs.100)) element maps these modification functions to insert, update, and delete operations against entities that are defined in the conceptual model.| +|multiplicity|The number of entities that can exist on each side of a relationship, as defined by an association. Also known as cardinality.

For more information, see [End Element (CSDL)](/ef/ef6/modeling/designer/advanced/edmx/csdl-spec#end-element-csdl) and [association end](../../../../../docs/framework/data/adonet/association-end.md).| +|multiple entity sets per type|The ability for an entity type to be defined in more than one entity set.

For more information, see [EntitySet Element (CSDL)](/ef/ef6/modeling/designer/advanced/edmx/csdl-spec#entityset-element-csdl) and [How to: Define a Model with Multiple Entity Sets per Type](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb738537(v=vs.100)).| +|navigation property|A property of an entity type that represents a relationship to another entity type, as defined by an association. Navigation properties are used to return related objects as an or an , depending on the multiplicity at the other end of the association.

For more information, see [NavigationProperty Element (CSDL)](/ef/ef6/modeling/designer/advanced/edmx/csdl-spec#navigationproperty-element-csdl) and [navigation property](../../../../../docs/framework/data/adonet/navigation-property.md).| +|query path|A string representation of a path that specifies which related objects to return when an object query is executed. A query path is defined by calling the method on an .

For more information, see [Loading Related Objects](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb896272(v=vs.100)).| |object context|Represents the entity container defined in the conceptual model. It contains a connection to the underlying data source and provides services such as change tracking and identity resolution. An object cont ext is represented by an instance of the or `DbContext` class.

`DbContext` is part of the [Entity Framework 5.0](https://go.microsoft.com/fwlink/?LinkId=234900). The Entity Framework 5.0 is not part of the .NET Framework, but is built on .NET Framework 4.5. The Entity Framework 5.0 is available as the [‘Entity Framework’](https://go.microsoft.com/fwlink/?LinkID=215714)[NuGet](https://go.microsoft.com/fwlink/?LinkId=232488) package. For more information, see [Entity Framework Releases and Versioning](https://go.microsoft.com/fwlink/?LinkId=234899).| |object layer|The entity types and object context definitions that are used by the Entity Framework.| -|object query|A query executed within an object context against a conceptual model that returns data as objects.

For more information, see [Object Queries](https://msdn.microsoft.com/library/0768033c-876f-471d-85d5-264884349276).| +|object query|A query executed within an object context against a conceptual model that returns data as objects.

For more information, see [Object Queries](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb896241(v=vs.100)).| |object-relational mapping|A technique for transforming data from a relational database into data types that can be used in object-oriented software applications.

The [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] provides object-relational mapping services by mapping relational data, as defined in the storage model, to data types, as defined in the conceptual model.

For more information, see [Modeling and Mapping](../../../../../docs/framework/data/adonet/ef/modeling-and-mapping.md).| |Object Services|Services provided by the [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] that enable application code to operate on entities like [!INCLUDE[dnprdnshort](../../../../../includes/dnprdnshort-md.md)] objects.| |persistence-ignorant object|An object that does not contain any logic that is related to data storage. Also known as a POCO entity.| |POCO|Plain Old CLR Object. An object that does not inherit from another class or implement an interface.| -|POCO entity|An entity in the [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] that does not inherit from or and does not implement the [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] interfaces. Frequently, POCO entities are existing domain objects that you use in an [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] application. These entities support persistence ignorance. For more information, see [Working with POCO Entities](https://msdn.microsoft.com/library/5e0fb82a-b6d1-41a1-b37b-c12db61629d3).| -|proxy object|An object that derives from a POCO class and is generated by the [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] to support change tracking and lazy loading. For more information, see [Requirements for Creating POCO Proxies](https://msdn.microsoft.com/library/dcdbf982-9b9d-4582-806a-64de4a1c03c8).| -|referential constraint|A constraint that is defined in a conceptual model that indicates that an entity has a dependent relationship to another entity. This constraint means that an instance of a dependent entity cannot exist without a corresponding instance of the principle entity

For more information, see [ReferentialConstraint Element (CSDL)](https://msdn.microsoft.com/library/24f96a80-85b5-4f2e-a14c-0e3eb6796fa0) and [referential integrity constraint](../../../../../docs/framework/data/adonet/referential-integrity-constraint.md).| +|POCO entity|An entity in the [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] that does not inherit from or and does not implement the [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] interfaces. Frequently, POCO entities are existing domain objects that you use in an [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] application. These entities support persistence ignorance. For more information, see [Working with POCO Entities](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/dd456853(v=vs.100)).| +|proxy object|An object that derives from a POCO class and is generated by the [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] to support change tracking and lazy loading. For more information, see [Requirements for Creating POCO Proxies](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/dd468057(v=vs.100)).| +|referential constraint|A constraint that is defined in a conceptual model that indicates that an entity has a dependent relationship to another entity. This constraint means that an instance of a dependent entity cannot exist without a corresponding instance of the principle entity

For more information, see [ReferentialConstraint Element (CSDL)](/ef/ef6/modeling/designer/advanced/edmx/csdl-spec#referentialconstraint-element-csdl) and [referential integrity constraint](../../../../../docs/framework/data/adonet/referential-integrity-constraint.md).| |relationship|A logical connection between entities.| -|role|The name given to each `End` of an association to clarify the semantics of the relationship.

For more information, see [End Element (CSDL)](https://msdn.microsoft.com/library/04f3c141-95bc-424b-989b-1c071b449e7c) and [association end](../../../../../docs/framework/data/adonet/association-end.md).| +|role|The name given to each `End` of an association to clarify the semantics of the relationship.

For more information, see [End Element (CSDL)](/ef/ef6/modeling/designer/advanced/edmx/csdl-spec#end-element-csdl) and [association end](../../../../../docs/framework/data/adonet/association-end.md).| |scalar property|A property of an entity that maps to a single field in the storage model.| |self-tracking entity|An entity built from a Text Template Transformation Toolkit (T4) that has the ability to record changes to scalar, complex, and navigation properties.| |simple type|A primitive type that is used for defining properties in the conceptual model.

For more information, see [Conceptual Model Types (CSDL)](/ef/ef6/modeling/designer/advanced/edmx/csdl-spec#conceptual-model-types-csdl) and [Entity Data Model: Primitive Data Types](../../../../../docs/framework/data/adonet/entity-data-model-primitive-data-types.md).| -|split entity|An entity type that is mapped to two separate types in the storage model.

For more information, see [How to: Define a Model with a Single Entity Mapped to Two Tables](https://msdn.microsoft.com/library/01762517-e4ab-439d-99e6-564ab7d6f3ed).| +|split entity|An entity type that is mapped to two separate types in the storage model.

For more information, see [How to: Define a Model with a Single Entity Mapped to Two Tables](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb896233(v=vs.100)).| |storage model|A definition for the logical model of data in a supported data source, such as a relational database. The storage model is defined in SSDL in the .ssdl file.

For more information, see [Modeling and Mapping](../../../../../docs/framework/data/adonet/ef/modeling-and-mapping.md) and [SSDL Specification](../../../../../docs/framework/data/adonet/ef/language-reference/ssdl-specification.md).| |.ssdl file|An XML file that contains the storage model, expressed in SSDL.| |store schema definition language (SSDL)|An XML-based language that is used to define the entity types, associations, entity containers, entity sets, and association sets of a storage model that frequently corresponds to a database schema.

For more information, see [SSDL Specification](../../../../../docs/framework/data/adonet/ef/language-reference/ssdl-specification.md).| diff --git a/docs/framework/data/adonet/ef/working-with-data-definition-language.md b/docs/framework/data/adonet/ef/working-with-data-definition-language.md index 7d12eddc03c12..429e9ae91aeb2 100644 --- a/docs/framework/data/adonet/ef/working-with-data-definition-language.md +++ b/docs/framework/data/adonet/ef/working-with-data-definition-language.md @@ -34,11 +34,11 @@ Starting with the [!INCLUDE[dnprdnshort](../../../../../includes/dnprdnshort-md. 2. Add an existing model to your application. - 1. Add an empty model named `SchoolModel`. To create an empty model, see the [How to: Create a New .edmx File](https://msdn.microsoft.com/library/beb8189e-e51c-4051-839c-9902c224abf2) topic. + 1. Add an empty model named `SchoolModel`. To create an empty model, see the [How to: Create a New .edmx File](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/cc716703(v=vs.100)) topic. The SchoolModel.edmx file is added to your project. - 1. Copy the conceptual, storage, and mapping content for the School model from the [School Model](https://msdn.microsoft.com/library/859a9587-81ea-4a45-9bc0-f8d330e1adac) topic. + 1. Copy the conceptual, storage, and mapping content for the School model from the [School Model](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb896300(v=vs.100)) topic. 2. Open the SchoolModel.edmx file and paste the content within the `edmx:Runtime` tags. diff --git a/docs/framework/data/adonet/entity-data-model.md b/docs/framework/data/adonet/entity-data-model.md index 40eccc987a6ee..14b5144b1b37f 100644 --- a/docs/framework/data/adonet/entity-data-model.md +++ b/docs/framework/data/adonet/entity-data-model.md @@ -56,6 +56,6 @@ The Entity Data Model (EDM) is a set of concepts that describe the structure of [referential integrity constraint](../../../../docs/framework/data/adonet/referential-integrity-constraint.md) ## See also -- [ADO.NET Entity Data Model Tools](https://msdn.microsoft.com/library/91076853-0881-421b-837a-f582f36be527) -- [.edmx File Overview](https://msdn.microsoft.com/library/f4c8e7ce-1db6-417e-9759-15f8b55155d4) +- [ADO.NET Entity Data Model Tools](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/bb399249(v=vs.100)) +- [.edmx File Overview](https://docs.microsoft.com/previous-versions/dotnet/netframework-4.0/cc982042(v=vs.100)) - [CSDL Specification](../../../../docs/framework/data/adonet/ef/language-reference/csdl-specification.md)