query entity data model using linq to entities


Using LINQ to Entities, we write LINQ queries against entities in EDM- Entity Data Model. This is one way of querying an entity data model.

This means that in practice, we write the LINQ query within the application code as shown in the program given below. These LINQ queries can be written either in vb.net or C# syntax. If we are developing applications such as ERP applications based on vb.net, then we need to write the LINQ query using vb.net syntax.

If application is being created as a c# project, the LINQ query has to be written in c# syntax. Note that there are many differences between LINQ queries written in VB and C#.

Because these queries are integrated in to the language, these queries are called Language Integrated Queries (LINQ). The following code demonstrates how to write a LINQ to Entities query using LINQ operators.

If you want to know benefits and applications of LINQ click here.

To write and execute a LINQ to Entities query, we will create a console application. The steps to create a console application are given below.

Choose File -> New -> Project to create a new project and click on the Console Application icon. Name the application as ERPConsoleApplication and click the OK button. A C# source file with the name program.cs is created.

Add a reference to the Entity Data Model project which we have seen in the article - How to create Entity data Model using ADO.Net Entity Framework designer in Visual studio.

We will also add a reference to the System.Data.Entity assembly. Next add an application configuration file (App.config) and copy the connection string from the App.config file of the Entity Data Model project. Finally add the below code to the Main() method.

class Program
{
	static void Main(string[] args)
	{
		using (var context = new SalesOrderManagementEntities())
		{
			// Query all the customers using LINQ to Entities query using c#.
			var Customers = from c in context.Customer
			select c;
			foreach (var Customer in Customers)
			{
				Console.WriteLine(String.Format("{0} {1}",
				Customer.Name, Customer.Address ));
			}
			Console.WriteLine();
			Console.ReadLine();
		}
	}
}
In the above code SalesOrderManagementEntities class is inherited from the ObjectContext. SalesOrderManagementEntities represents EntityContainer.

SalesOrderManagementEntities has a property customer which is a EntitySet in the Entity Data Model.

In the LINQ query given above, we have used ObjectContext class ( SalesOrderManagementEntities) property Customer to get data from the Customer table.

In the same query statement, c allows us to refer what we are working with in the query. C is called control variable and when typed in the program intellisense prompts us with suggestions.