LINQ – 实体

LINQ – 实体


作为 ADO.NET 实体框架的一部分,LINQ to Entities 比 LINQ to SQL 更灵活,但由于其复杂性和缺乏关键功能而不太流行。但是,它没有 LINQ to SQL 的限制,它只允许在 SQL 服务器数据库中查询数据,因为 LINQ to Entities 方便了在 Oracle、MySQL 等大量数据提供程序中的数据查询。

此外,它得到了 ASP.Net 的主要支持,因为用户可以利用数据源控件通过 LINQ to Entities 执行查询,并促进结果的绑定,而无需任何额外的编码。

由于这些优势,LINQ to Entities 已成为当今在数据库上使用 LINQ 的标准机制。还可以使用 LINQ to Entities 更改查询的数据详细信息并轻松提交批量更新。LINQ to Entities 最有趣的事实是它具有与 SQL 相同的语法,甚至具有相同的标准查询运算符组,如 Join、Select、OrderBy 等。

LINQ to Entities 查询创建和执行过程

  • ObjectContext(实体连接)构建ObjectQuery实例

  • 使用新构造的实例在 C# 或 Visual Basic (VB) 中编写查询

  • 将 LINQ 的标准查询运算符以及 LINQ 表达式转换为命令树

  • 执行查询将遇到的任何异常直接传递给客户端

  • 将所有查询结果返回给客户端

ObjectContext是实现与实体数据模型交互的主要类,换句话说,它充当连接 LINQ 和数据库的桥梁。命令树在这里是与实体框架兼容的查询表示。

另一方面,实体框架实际上是开发人员通常缩写为 ORM 的对象关系映射器,它根据数据库表生成业务对象和实体,并促进各种基本操作,如创建、更新、删除和读取. 下图显示了实体框架及其组件。

LINQ - 实体

将 LINQ 与实体模型结合使用的 ADD、UPDATE 和 DELETE 示例

首先按照以下步骤添加实体模型。

步骤 1 – 右键单击​​项目并单击添加新项目将打开如下窗口。选择 ADO.NET Entity Data Model 并指定名称,然后单击 Add。

LINQ - 实体模型

步骤 2 – 选择从数据库生成。

LINQ - 实体模型

步骤 3 – 从下拉菜单中选择数据库连接。

LINQ - 实体模型

步骤 4 – 选择所有表格。

LINQ - 实体模型

现在编写以下代码。

using DataAccess;
using System;
using System.Linq;

namespace LINQTOSQLConsoleApp {
   public class LinqToEntityModel {
      static void Main(string[] args) {

         using (LinqToSQLDBEntities context = new LinqToSQLDBEntities()) {
            //Get the List of Departments from Database
            var departmentList = from d in context.Departments
            select d;

            foreach (var dept in departmentList) {
               Console.WriteLine("Department Id = {0} , Department Name = {1}",
                  dept.DepartmentId, dept.Name);
            }

            //Add new Department
            DataAccess.Department department = new DataAccess.Department();
            department.Name = "Support";

            context.Departments.Add(department);
            context.SaveChanges();

            Console.WriteLine("Department Name = Support is inserted in Database");

            //Update existing Department
            DataAccess.Department updateDepartment = context.Departments.FirstOrDefault(d ⇒d.DepartmentId == 1);
            updateDepartment.Name = "Account updated";
            context.SaveChanges();

            Console.WriteLine("Department Name = Account is updated in Database");

            //Delete existing Department
            DataAccess.Department deleteDepartment = context.Departments.FirstOrDefault(d ⇒d.DepartmentId == 3);
            context.Departments.Remove(deleteDepartment);
            context.SaveChanges();

            Console.WriteLine("Department Name = Pre-Sales is deleted in Database");

            //Get the Updated List of Departments from Database
            departmentList = from d in context.Departments
            select d;

            foreach (var dept in departmentList) {
               Console.WriteLine("Department Id = {0} , Department Name = {1}",
                  dept.DepartmentId, dept.Name);
            }
         }

         Console.WriteLine("\nPress any key to continue.");
         Console.ReadKey();
      }
   }
}

当上面的代码被编译和执行时,它会产生以下结果 –

LINQ - 实体模型结果

觉得文章有用?

点个广告表达一下你的爱意吧 !😁