LINQ实体 - LinQ教程
作为ADO.NET实体框架的一部分,LINQ到实体比LINQ到SQL更灵活,但由于其复杂性和缺乏关键功能没有太大的普及。但是,它没有LINQ的限制SQL允许数据查询,只能在SQL服务器数据库LINQ到实体中查询大量数据,如Oracle,MySQL等资料提供方便数据查询
此外,它已经得到了在这个意义上,用户可以使用一个数据源控件执行通过LINQ到实体查询,结果没有任何需要额外的编码有利于结合从ASP.Net支持。
LINQ到实体具有这些优点成为了标准机制,LINQ对数据库的使用。另外,也可以与LINQ实体来改变查询的数据的信息和容易批量更新。最有趣的是有关LINQ到实体具有像SQL相同的语法,甚至有同组标准查询运算符,如加入,选择,排序等等。
LINQ 到Entities查询的创建和执行过程
- 建设一个ObjectQuery的实例ObjectContext(实体连接)
- 通过使用新建成的情况下构成C#或Visual Basic(VB)查询
- 转换LINQ的标准查询操作符,以及LINQ表达式到命令树
- 执行直接传递到遇到客户端任何异常查询
- 返回到客户机的所有查询结果
ObjectContext是这里的主类,使与实体数据模型或换句话说相互作用充当连接LINQ到数据库的桥. 命令树是这里与实体框架兼容的查询表示。 实体框架,另一方面实际上是对象关系映射器一般简称ORM,由做业务对象的产生,以及实体按照数据库表,便于各种基本操作,如创建,更新,删除和读取。
下面是一个图表实体框架到更好地了解这一概念的。
使用LINQ实体模型添加,更新和删除示例
首先添加实体模型按以下步骤。
步骤 1: 右键单击项目,然后单击添加新项目将打开的窗口中按如下。选择ADO.NET实体数据模型,并指定名称,然后单击添加。
<center style="box-sizing: border-box;"></center>
步骤 2: 选择从数据库生成。
<center style="box-sizing: border-box;"></center>
步骤 3: 选择数据库连接。
<center style="box-sizing: border-box;"></center>
步骤 4: 选择所有表
<center style="box-sizing: border-box;"></center>
现在写下面的代码。
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();
}
}
}
让我们编译和运行上面的程序,这将产生以下结果: