Visual Studio 中的 LINQ to SQL 工具

LINQ to SQL 是Microsoft发布的第一种对象关系映射技术。 它在基本方案中运行良好,并且将继续在 Visual Studio 中受支持,但它不再处于积极开发状态。 在维护已使用它的旧应用程序或使用 SQL Server 且不需要多表映射的简单应用程序中时,请使用 LINQ to SQL。 通常,当需要对象关系映射层时,新应用程序应使用 Entity Framework。

安装 LINQ to SQL 工具

在 Visual Studio 中,使用 对象关系设计器O/R 设计器)创建表示 SQL 表的 LINQ to SQL 类。 O/R 设计器是用于编辑 .dbml 文件的 UI。 要使用设计器界面编辑 .dbml 文件,需具备 LINQ to SQL 工具,而这些工具在默认情况下并未作为 Visual Studio 任何工作负载的一部分进行安装。

若要安装 LINQ to SQL 工具,请启动 Visual Studio 安装程序,选择 修改,然后选择“各个组件”选项卡,然后选择“代码工具” 类别下 LINQ to SQL 工具

什么是 O/R 设计器

O/R 设计器 在其设计图面上具有两个不同的区域:左侧的实体窗格和右侧的方法窗格。 实体窗格是显示实体类、关联和继承层次结构的主要设计图面。 方法窗格是显示 DataContext 方法并将其映射到存储过程和函数的设计界面。

O/R 设计器 提供了可视化设计图面,用于创建基于数据库中对象的 LINQ to SQL 实体类和关联(关系)。 换句话说,O/R 设计器 在映射到数据库中对象的应用程序中创建对象模型。 它还生成强类型 DataContext,用于在实体类和数据库之间发送和接收数据。 O/R 设计器 还提供将存储过程和函数映射到用于返回数据和填充实体类 DataContext 方法的功能。 最后,O/R 设计器 提供了在实体类之间设计继承关系的功能。

打开 O/R 设计器

若要向项目添加 LINQ to SQL 实体模型,请选择 Project>添加新项,然后从项目项列表中选择 LINQ to SQL 类

显示 LINQ to SQL 类的屏幕截图。

Visual Studio 将创建 .dbml 文件并将其添加到解决方案。 这是 XML 映射文件及其相关代码文件。

显示解决方案资源管理器中 LINQ to SQL 类的屏幕截图。

选择 .dbml 文件时,Visual Studio 会显示 O/R 设计器 图面,以便直观地创建模型。 下图显示从服务器资源管理器中拖动 Northwind CustomersOrders 表之后的设计器。 请注意表之间的关系。

显示 LINQ to SQL 设计器的 屏幕截图。

重要

O/R 设计器 是一个简单的对象关系映射器,因为它仅支持 1:1 映射关系。 换句话说,实体类只能与数据库表或视图具有 1:1 映射关系。 不支持复杂的映射,例如将实体类映射到联接表;将 Entity Framework 用于复杂映射。 此外,设计器是单向代码生成器。 这意味着只有对设计器图面所做的更改才会反映在代码文件中。 O/R 设计器中不反映对代码文件的手动更改。 在保存设计器并重新生成代码时,将覆盖在代码文件中手动进行的所有更改。 有关如何添加用户代码和扩展 O/R 设计器生成的类的信息,请参阅 如何:扩展 O/R 设计器生成的代码

创建和配置 DataContext

向项目添加“LINQ to SQL 类”项并打开 O/R 设计器后,空设计图面中会显示一个可供配置的空 DataContext DataContext 是使用拖动到设计图面上的第一项所提供的连接信息进行配置的。 因此,DataContext 是使用放置到设计图面上的第一项中的连接信息进行配置的。 有关 DataContext 类的详细信息,请参阅 DataContext 方法(O/R 设计器)

创建映射到数据库表和视图的实体类

可以通过将数据库表和视图从 服务器资源管理器数据库资源管理器 拖到 O/R 设计器来创建映射到表和视图的实体类。 正如上一节中所述,DataContext 是使用拖动到设计图面上的第一项所提供的连接信息进行配置的。 如果将使用不同连接的后续项添加到 O/R 设计器,则可以更改 DataContext的连接。 有关详细信息,请参阅 如何:创建映射到表和视图的 LINQ to SQL 类(O/R 设计器)

创建调用存储过程和函数的 DataContext 方法

可以通过将存储过程和函数从 服务器资源管理器数据库资源管理器 拖动到 O/R 设计器来创建调用(映射到)存储过程和函数的 DataContext 方法。 存储过程和函数作为 DataContext 的方法添加到 O/R 设计器中。

说明

将存储过程和函数从 服务器资源管理器数据库资源管理器 拖到 O/R 设计器时,生成的 DataContext 方法的返回类型因放置项的位置而异。 有关详细信息,请参阅 DataContext 方法(O/R 设计器)

配置 DataContext 以使用存储过程在实体类和数据库之间保存数据

如前所述,可以创建调用存储过程和函数的 DataContext 方法。 此外,还可以分配用于默认 LINQ to SQL 运行时行为的存储过程,这些行为执行插入、更新和删除。 有关详细信息,请参阅 如何:分配存储过程以执行更新、插入和删除(O/R 设计器)

继承和 O/R 设计器

与其他对象一样,LINQ to SQL 类可以使用继承并从其他类派生。 在数据库中,以多种方式创建继承关系。 O/R 设计器 支持单表继承的概念,因为它通常在关系数据库系统中应用。 有关详细信息,请参阅 如何:使用 O/R 设计器配置继承。

LINQ to SQL 查询

O/R 设计器 创建的实体类旨在与 语言集成查询(LINQ)配合使用。 有关详细信息,请参阅 如何查询信息

将生成的 DataContext 和实体类代码分隔为不同的命名空间

O/R 设计器为 DataContext 提供了“上下文命名空间”和“实体命名空间”属性。 这些属性决定 DataContext 和实体类代码生成到哪个命名空间。 默认情况下,这些属性为空,DataContext 和实体类将生成到应用程序的命名空间中。 若要将代码生成到应用程序命名空间以外的命名空间中,请在 上下文命名空间 和/或 实体命名空间 属性中输入值。

参考内容

另请参阅