作为ADO.NET实体框架的一部分,LINQ to Entities比LINQ to SQL更灵活,但由于其复杂性和缺少关键功能而并不流行。但是,它不具有LINQ to SQL的局限性,后者仅允许在SQL Server数据库中进行数据查询,因为LINQ to Entities可以促进大量数据提供程序(如Oracle,MySQL等)中的数据查询。
此外,它在某种程度上得到了ASP.Net的大力支持,即用户可以利用数据源控件来通过LINQ到Entities执行查询,并且不需要任何额外的编码就可以方便地绑定输出。
LINQ to Entities具有这些优势,已成为当今在数据库上使用LINQ的标准机制。 LINQ to Entities还可以更改查询的数据详细信息并轻松提交批处理更新。关于LINQ to Entities的最有趣的事实是,它具有与SQL相同的语法,甚至具有相同的标准查询运算符组,如Join,Select,OrderBy等。
查询创建和执行过程
ObjectContext 是允许与实体数据模型进行交互的主要类,换句话说,它是将LINQ连接到数据库的桥梁。
另一方面,实体框架实际上是对象Relational Mapper ,通常被开发人员简称为ORM,开发人员根据数据库表生成业务对象以及实体,并促进了诸如创建,更新,删除和阅读。下图显示了实体框架及其组件。

添加,更新,删除示例
首先按照以下步骤添加实体模型。
第1步 - 右键单击项目,然后单击添加新项将打开窗口,如下所示。选择ADO.NET实体数据模型并指定名称,然后单击"Add"。

第2步 - 选择从数据库生成。

第3步 - 从下拉菜单中选择"数据库连接"。

第4步 - 选择所有Table。

现在编写以下代码。
using DataAccess;
using System;
using System.Linq;
namespace LINQTOSQLConsoleApp {
public class LinqToEntityModel {
static void Main(string[] args) {
</span><span class="kwd">using</span><span class="pln"> </span><span class="pun">(</span><span class="typ">LinqToSQLDBEntities</span><span class="pln"> context </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">LinqToSQLDBEntities</span><span class="pun">())</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="com">//Get the List of Departments from Database</span><span class="pln">
</span><span class="kwd">var</span><span class="pln"> departmentList </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> d </span><span class="kwd">in</span><span class="pln"> context</span><span class="pun">.</span><span class="typ">Departments</span><span class="pln">
</span><span class="kwd">select</span><span class="pln"> d</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">foreach</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">var</span><span class="pln"> dept </span><span class="kwd">in</span><span class="pln"> departmentList</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="typ">Console</span><span class="pun">.</span><span class="typ">WriteLine</span><span class="pun">(</span><span class="str">"Department Id={0} , Department Name={1}"</span><span class="pun">,</span><span class="pln">
dept</span><span class="pun">.</span><span class="typ">DepartmentId</span><span class="pun">,</span><span class="pln"> dept</span><span class="pun">.</span><span class="typ">Name</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="com">//Add new Department</span><span class="pln">
</span><span class="typ">DataAccess</span><span class="pun">.</span><span class="typ">Department</span><span class="pln"> department </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DataAccess</span><span class="pun">.</span><span class="typ">Department</span><span class="pun">();</span><span class="pln">
department</span><span class="pun">.</span><span class="typ">Name</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Support"</span><span class="pun">;</span><span class="pln">
context</span><span class="pun">.</span><span class="typ">Departments</span><span class="pun">.</span><span class="typ">Add</span><span class="pun">(</span><span class="pln">department</span><span class="pun">);</span><span class="pln">
context</span><span class="pun">.</span><span class="typ">SaveChanges</span><span class="pun">();</span><span class="pln">
</span><span class="typ">Console</span><span class="pun">.</span><span class="typ">WriteLine</span><span class="pun">(</span><span class="str">"Department Name=Support is inserted in Database"</span><span class="pun">);</span><span class="pln">
</span><span class="com">//Update existing Department</span><span class="pln">
</span><span class="typ">DataAccess</span><span class="pun">.</span><span class="typ">Department</span><span class="pln"> updateDepartment </span><span class="pun">=</span><span class="pln"> context</span><span class="pun">.</span><span class="typ">Departments</span><span class="pun">.</span><span class="typ">FirstOrDefault</span><span class="pun">(</span><span class="pln">d </span><span class="pun">⇒</span><span class="pln">d</span><span class="pun">.</span><span class="typ">DepartmentId</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
updateDepartment</span><span class="pun">.</span><span class="typ">Name</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Account updated"</span><span class="pun">;</span><span class="pln">
context</span><span class="pun">.</span><span class="typ">SaveChanges</span><span class="pun">();</span><span class="pln">
</span><span class="typ">Console</span><span class="pun">.</span><span class="typ">WriteLine</span><span class="pun">(</span><span class="str">"Department Name=Account is updated in Database"</span><span class="pun">);</span><span class="pln">
</span><span class="com">//Delete existing Department</span><span class="pln">
</span><span class="typ">DataAccess</span><span class="pun">.</span><span class="typ">Department</span><span class="pln"> deleteDepartment </span><span class="pun">=</span><span class="pln"> context</span><span class="pun">.</span><span class="typ">Departments</span><span class="pun">.</span><span class="typ">FirstOrDefault</span><span class="pun">(</span><span class="pln">d </span><span class="pun">⇒</span><span class="pln">d</span><span class="pun">.</span><span class="typ">DepartmentId</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="lit">3</span><span class="pun">);</span><span class="pln">
context</span><span class="pun">.</span><span class="typ">Departments</span><span class="pun">.</span><span class="typ">Remove</span><span class="pun">(</span><span class="pln">deleteDepartment</span><span class="pun">);</span><span class="pln">
context</span><span class="pun">.</span><span class="typ">SaveChanges</span><span class="pun">();</span><span class="pln">
</span><span class="typ">Console</span><span class="pun">.</span><span class="typ">WriteLine</span><span class="pun">(</span><span class="str">"Department Name=Pre-Sales is deleted in Database"</span><span class="pun">);</span><span class="pln">
</span><span class="com">//Get the Updated List of Departments from Database</span><span class="pln">
departmentList </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> d </span><span class="kwd">in</span><span class="pln"> context</span><span class="pun">.</span><span class="typ">Departments</span><span class="pln">
</span><span class="kwd">select</span><span class="pln"> d</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">foreach</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">var</span><span class="pln"> dept </span><span class="kwd">in</span><span class="pln"> departmentList</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="typ">Console</span><span class="pun">.</span><span class="typ">WriteLine</span><span class="pun">(</span><span class="str">"Department Id={0} , Department Name={1}"</span><span class="pun">,</span><span class="pln">
dept</span><span class="pun">.</span><span class="typ">DepartmentId</span><span class="pun">,</span><span class="pln"> dept</span><span class="pun">.</span><span class="typ">Name</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="typ">Console</span><span class="pun">.</span><span class="typ">WriteLine</span><span class="pun">(</span><span class="str">"\nPress any key to continue."</span><span class="pun">);</span><span class="pln">
</span><span class="typ">Console</span><span class="pun">.</span><span class="typ">ReadKey</span><span class="pun">();</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
}
}
编译并执行上述代码后,将产生以下输出-