LINQ to SQL предлагает инфраструктуру (во время выполнения) для управления реляционными данными как объектами. Он является компонентом версии 3.5 .NET Framework и успешно выполняет перевод языковых запросов объектной модели на SQL. Эти запросы затем отправляются в базу данных с целью выполнения. После получения результатов из базы данных LINQ to SQL снова переводит их в объекты.
Введение в LINQ To SQL
Для большинства разработчиков ASP.NET LINQ to SQL (также известный как DLINQ) является электрифицирующей частью Language Integrated Query, поскольку это позволяет запрашивать данные в базе данных SQL-сервера с использованием обычных выражений LINQ. Он также позволяет обновлять, удалять и вставлять данные, но единственным недостатком, от которого он страдает, является его ограничение базой данных SQL-сервера. Однако есть много преимуществ LINQ to SQL по сравнению с ADO.NET, таких как уменьшенная сложность, несколько строк кода и многое другое.
Ниже приведена схема, показывающая архитектуру исполнения LINQ to SQL.
Как использовать LINQ to SQL?
Шаг 1 — Создайте новое «соединение данных» с сервером базы данных. Просмотр & arrar; Обозреватель серверов & arrar; Data Connections & arrar; Добавить соединение
Шаг 2 — Добавить LINQ To SQL class file
Шаг 3 — Выберите таблицы из базы данных и перетащите их в новый файл класса LINQ to SQL.
Шаг 4 — Добавлены таблицы в файл класса.
Запросы с помощью LINQ to SQL
Правила выполнения запроса с LINQ to SQL аналогичны правилам стандартного запроса LINQ, т.е. запрос выполняется либо с отложенным, либо с немедленным выполнением. Существуют различные компоненты, которые играют роль в выполнении запроса с LINQ to SQL, и это следующие.
-
LINQ to SQL API — запрашивает выполнение запроса от имени приложения и отправляет его в LINQ to SQL Provider.
-
Поставщик LINQ to SQL — преобразует запрос в Transact SQL (T-SQL) и отправляет новый запрос поставщику ADO для выполнения.
-
ADO Provider — после выполнения запроса отправьте результаты в виде DataReader в LINQ to SQL Provider, который, в свою очередь, преобразует его в форму пользовательского объекта.
LINQ to SQL API — запрашивает выполнение запроса от имени приложения и отправляет его в LINQ to SQL Provider.
Поставщик LINQ to SQL — преобразует запрос в Transact SQL (T-SQL) и отправляет новый запрос поставщику ADO для выполнения.
ADO Provider — после выполнения запроса отправьте результаты в виде DataReader в LINQ to SQL Provider, который, в свою очередь, преобразует его в форму пользовательского объекта.
Следует отметить, что перед выполнением запроса LINQ to SQL крайне важно подключиться к источнику данных через класс DataContext.
Вставить, обновить и удалить с помощью LINQ To SQL
Добавить ИЛИ Вставить
C #
using System; using System.Linq; namespace LINQtoSQL { class LinqToSQLCRUD { static void Main(string[] args) { string connectString = System.Configuration.ConfigurationManager.ConnectionStrings["LinqToSQLDBConnectionString"].ToString(); LinqToSQLDataContext db = new LinqToSQLDataContext(connectString); //Create new Employee Employee newEmployee = new Employee(); newEmployee.Name = "Michael"; newEmployee.Email = "[email protected]"; newEmployee.ContactNo = "343434343"; newEmployee.DepartmentId = 3; newEmployee.Address = "Michael - USA"; //Add new Employee to database db.Employees.InsertOnSubmit(newEmployee); //Save changes to Database. db.SubmitChanges(); //Get new Inserted Employee Employee insertedEmployee = db.Employees.FirstOrDefault(e ⇒e.Name.Equals("Michael")); Console.WriteLine("Employee Id = {0} , Name = {1}, Email = {2}, ContactNo = {3}, Address = {4}", insertedEmployee.EmployeeId, insertedEmployee.Name, insertedEmployee.Email, insertedEmployee.ContactNo, insertedEmployee.Address); Console.WriteLine("\nPress any key to continue."); Console.ReadKey(); } } }
VB
Module Module1 Sub Main() Dim connectString As String = System.Configuration.ConfigurationManager.ConnectionStrings("LinqToSQLDBConnectionString").ToString() Dim db As New LinqToSQLDataContext(connectString) Dim newEmployee As New Employee() newEmployee.Name = "Michael" newEmployee.Email = "[email protected]" newEmployee.ContactNo = "343434343" newEmployee.DepartmentId = 3 newEmployee.Address = "Michael - USA" db.Employees.InsertOnSubmit(newEmployee) db.SubmitChanges() Dim insertedEmployee As Employee = db.Employees.FirstOrDefault(Function(e) e.Name.Equals("Michael")) Console.WriteLine("Employee Id = {0} , Name = {1}, Email = {2}, ContactNo = {3}, Address = {4}", insertedEmployee.EmployeeId, insertedEmployee.Name, insertedEmployee.Email, insertedEmployee.ContactNo, insertedEmployee.Address) Console.WriteLine(vbLf & "Press any key to continue.") Console.ReadKey() End Sub End Module
Когда вышеуказанный код C # или VB компилируется и запускается, он дает следующий результат —
Emplyee ID = 4, Name = Michael, Email = [email protected], ContactNo = 343434343, Address = Michael - USA Press any key to continue.
Обновить
C #
using System; using System.Linq; namespace LINQtoSQL { class LinqToSQLCRUD { static void Main(string[] args) { string connectString = System.Configuration.ConfigurationManager.ConnectionStrings["LinqToSQLDBConnectionString"].ToString(); LinqToSQLDataContext db = new LinqToSQLDataContext(connectString); //Get Employee for update Employee employee = db.Employees.FirstOrDefault(e =>e.Name.Equals("Michael")); employee.Name = "George Michael"; employee.Email = "[email protected]"; employee.ContactNo = "99999999"; employee.DepartmentId = 2; employee.Address = "Michael George - UK"; //Save changes to Database. db.SubmitChanges(); //Get Updated Employee Employee updatedEmployee = db.Employees.FirstOrDefault(e ⇒e.Name.Equals("George Michael")); Console.WriteLine("Employee Id = {0} , Name = {1}, Email = {2}, ContactNo = {3}, Address = {4}", updatedEmployee.EmployeeId, updatedEmployee.Name, updatedEmployee.Email, updatedEmployee.ContactNo, updatedEmployee.Address); Console.WriteLine("\nPress any key to continue."); Console.ReadKey(); } } }
VB
Module Module1 Sub Main() Dim connectString As String = System.Configuration.ConfigurationManager.ConnectionStrings("LinqToSQLDBConnectionString").ToString() Dim db As New LinqToSQLDataContext(connectString) Dim employee As Employee = db.Employees.FirstOrDefault(Function(e) e.Name.Equals("Michael")) employee.Name = "George Michael" employee.Email = "[email protected]" employee.ContactNo = "99999999" employee.DepartmentId = 2 employee.Address = "Michael George - UK" db.SubmitChanges() Dim updatedEmployee As Employee = db.Employees.FirstOrDefault(Function(e) e.Name.Equals("George Michael")) Console.WriteLine("Employee Id = {0} , Name = {1}, Email = {2}, ContactNo = {3}, Address = {4}", updatedEmployee.EmployeeId, updatedEmployee.Name, updatedEmployee.Email, updatedEmployee.ContactNo, updatedEmployee.Address) Console.WriteLine(vbLf & "Press any key to continue.") Console.ReadKey() End Sub End Module
Когда приведенный выше код C # или Vb компилируется и запускается, он дает следующий результат:
Emplyee ID = 4, Name = George Michael, Email = [email protected], ContactNo = 999999999, Address = Michael George - UK Press any key to continue.
удалять
C #
using System; using System.Linq; namespace LINQtoSQL { class LinqToSQLCRUD { static void Main(string[] args) { string connectString = System.Configuration.ConfigurationManager.ConnectionStrings["LinqToSQLDBConnectionString"].ToString(); LinqToSQLDataContext db = newLinqToSQLDataContext(connectString); //Get Employee to Delete Employee deleteEmployee = db.Employees.FirstOrDefault(e ⇒e.Name.Equals("George Michael")); //Delete Employee db.Employees.DeleteOnSubmit(deleteEmployee); //Save changes to Database. db.SubmitChanges(); //Get All Employee from Database var employeeList = db.Employees; foreach (Employee employee in employeeList) { Console.WriteLine("Employee Id = {0} , Name = {1}, Email = {2}, ContactNo = {3}", employee.EmployeeId, employee.Name, employee.Email, employee.ContactNo); } Console.WriteLine("\nPress any key to continue."); Console.ReadKey(); } } }
VB
Module Module1 Sub Main() Dim connectString As String = System.Configuration.ConfigurationManager.ConnectionStrings("LinqToSQLDBConnectionString").ToString() Dim db As New LinqToSQLDataContext(connectString) Dim deleteEmployee As Employee = db.Employees.FirstOrDefault(Function(e) e.Name.Equals("George Michael")) db.Employees.DeleteOnSubmit(deleteEmployee) db.SubmitChanges() Dim employeeList = db.Employees For Each employee As Employee In employeeList Console.WriteLine("Employee Id = {0} , Name = {1}, Email = {2}, ContactNo = {3}", employee.EmployeeId, employee.Name, employee.Email, employee.ContactNo) Next Console.WriteLine(vbLf & "Press any key to continue.") Console.ReadKey() End Sub End Module
Когда вышеуказанный код C # или VB компилируется и запускается, он дает следующий результат —