开发手册 欢迎您!
软件开发者资料库

LINQ - 实体

LINQ实体 - 从简单和简单的步骤学习LINQ(语言集成查询),从基本概念到高级概念,包括概述,环境设置,标准查询运算符,LINQ to SQL,LINQ对象,LINQ到数据集,LINQ到XML,LINQ到实体,LINQ Lambda表达式,LINQ与ASP.Net,LINQ查询。

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

此外,它得到了ASP.Net的主要支持,用户可以利用数据源控件通过LINQ to Entities执行查询,并且无需额外编码即可实现结果的绑定./p>

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

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

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

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

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

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

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

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

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

LINQ - Entities

使用带有实体模型的LINQ的ADD,UPDATE和DELETE示例

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

步骤1 : 右键单击项目,然后单击添加新项将打开窗口,如下所示.选择ADO.NET实体数据模型并指定名称,然后单击添加.

LINQ - Entity Model

第2步 : 选择从数据库生成.

LINQ - Entity Model

第3步 : 从下拉菜单中选择数据库连接.

LINQ - Entity Model

第4步 : 选择所有表格.

LINQ - Entity Model

现在写以下代码.

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 - Entity Model Result