Language-INtegrated Query (LINQ) is a Microsoft .NET Framework component that adds native data querying capabilities to .NET languages. In other words LINQ has the power of querying on any source of data (Collection of objects, database tables or XML Files). We can easily retrieve data from any object that implements the IEnumerable<T> interface and any provider that implements the IQueryable<T> interface.
Microsoft basically divides LINQ into the following three areas:
- LINQ to Object : Queries performed against in-memory data
- LINQ to ADO.Net
- LINQ to SQL (formerly DLinq) : Queries performed against the relation database; only Microsoft SQL Server is supported.
- LINQ to DataSet : Supports queries by using ADO.NET data sets and data tables.
- LINQ to Entities : Microsoft ORM solution
- LINQ to XML (formerly XLinq) : Queries performed against the XML source.
LINQ to SQL
LINQ to SQL translates our actions to SQL and submits the changes to the database. Here we will perform Select, Insert, Update and Delete operations on a COURSE table.
Step 1: Create a COURSE Table in the database
Step 2: Create a ContextData file using the Object Relational Designer:
Create a new item, select the LINQ to SQL classes (as shown in the following figure) and name it Operation.dbml.
After clicking the Add button the ContextData file is created. Now we should drag all the tables onto the left-hand side of the designer and save (as shown in the following figure). This will create all the mappings and settings for each table and their entities.
For .dbml files the database connection string is defined in the web.config file as:
- <connectionStrings>
- <add name="DevelopmentConnectionString" connectionString="Data Source=sandeepss-PC;Initial Catalog=Development;User ID=sa;
- Password=*******" providerName="System.Data.SqlClient" />
- </connectionStrings>
We can use a connection string from the web.config file or we can pass a connection string as a parameter in the constructor of the DataContext class to create an object of the DataContext class.
The SELECT Operation
- private void GetCourses()
- {
-
- OperationDataContext OdContext = new OperationDataContext();
- var courseTable = from course in OdContext.GetTable<COURSE>() select course;
-
- grdCourse.DataSource = courseTable;
- grdCourse.DataBind();
- }
The INSERT Operation
- private void AddNewCourse()
- {
-
- OperationDataContext OdContext = new OperationDataContext();
- COURSE objCourse = new COURSE();
- objCourse.course_name = "B.Tech";
- objCourse.course_desc = "Bachelor Of Technology";
- objCourse.modified_date = DateTime.Now;
-
- OdContext.COURSEs.InsertOnSubmit(objCourse);
-
- OdContext.SubmitChanges();
- }
The Update Operation
- private void UpdateCourse()
- {
- OperationDataContext OdContext = new OperationDataContext();
-
- COURSE objCourse = OdContext.COURSEs.Single(course => course.course_name == "B.Tech");
-
- objCourse.course_desc = "Bachelor of Technology";
-
- OdContext.SubmitChanges();
- }
The DELETE Operation
- private void DeleteCourse()
- {
- OperationDataContext OdContext = new OperationDataContext();
-
- COURSE objCourse = OdContext.COURSEs.Single(course => course.course_name == "B.Tech");
-
- OdContext.COURSEs.DeleteOnSubmit(objCourse);
-
- OdContext.SubmitChanges();
- }
Conculsion
To perform select, insert, update and delete operations we create a table and create a data context class; in other words a dbml file. In this file designer view we drag and drop the COURSE table from the Server Explorer. This data context class is an Object and table mapping and we perform the operation on the object and database updated according to the action using the submitChanges() method.