演练:使用单表继承创建 LINQ to SQL 类(O/R 设计器)

Visual Studio 中的 LINQ to SQL 工具支持单表继承,因为它通常在关系系统中实现。 本演练扩展了 How to: Configure inheritance by using the O/R Designer 主题中提供的泛型步骤,并提供一些真实数据来演示如何在 O/R 设计器中使用继承。

在本演练中,你将执行以下任务:

  • 创建数据库表并向其添加数据。

  • 创建 Windows 窗体应用程序。

  • 将 LINQ to SQL 文件添加到项目。

  • 创建新的实体类。

  • 配置实体类以使用继承。

  • 查询继承的类。

  • 在 Windows 窗体上显示数据。

创建要从中继承的表

若要查看继承的工作原理,请创建一个小 Person 表,将其用作基类,然后创建 Employee 继承自该表的对象。

创建基表以演示继承

  1. 服务器资源管理器数据库资源管理器中,右键单击 “表 ”节点,然后单击“ 添加新表”。

    注释

    可以使用 Northwind 数据库或任何其他可以向其添加表的数据库。

  2. 表设计器中,将以下列添加到表中:

    列名 数据类型 允许空值
    ID int 错误
    类型 int 正确
    名字 nvarchar(200) 错误
    姓氏 nvarchar(200) 错误
    Manager int 正确
  3. 将 ID 列设置为主键。

  4. 保存表并将其命名 为 Person

将数据添加到表

为了您可以检查继承是否已正确配置,表需要一些数据用于每个类的单表继承。

将数据添加到数据表中

  1. 在数据视图中打开表。 (右键单击服务器资源管理器数据库资源管理器中的 Person 表,然后单击“显示表数据”。

  2. 将以下数据复制到表中。 (可以通过在 “结果 ”窗格中选择整行将其复制并粘贴到表中。

    ID 类型 名字 姓氏 Manager
    1 1 安妮 华莱士 NULL
    2 1 卡洛斯 格里洛 NULL
    3 1 Yael Peled NULL
    4 2 Gatis 奥佐林斯 1
    5 2 安德烈亚斯 豪瑟 1
    6 2 蒂芬妮 Phuvasate 1
    7 2 Alexey Orekhov 2
    8 2 Michał Poliszkiewicz 2
    9 2 2
    10 2 Fabricio Noriega 3
    11 2 明迪 马丁 3
    12 2 Ken 3

创建新项目

创建表后,请创建一个新项目来演示如何配置继承。

创建新的 Windows 窗体应用程序

  1. 在 Visual Studio 的“文件”菜单中,依次选择“新建”“项目” 。

  2. 在左侧窗格中展开 Visual C#Visual Basic ,然后选择 Windows 桌面

  3. 在中间窗格中,选择 Windows 窗体应用 项目类型。

  4. 将项目命名为 InheritanceWalkthrough,然后选择 “确定”。

    创建InheritanceWalkthrough项目,并将其添加到解决方案资源管理器

将 LINQ to SQL 类文件添加到项目

将 LINQ to SQL 文件添加到项目

  1. “项目 ”菜单上,单击“ 添加新项”。

  2. 单击 LINQ to SQL 类 模板,然后选择“ 添加”。

    文件 .dbml 已添加到项目中,然后 O/R 设计器 自动打开。

使用 O/R 设计器创建继承

通过将继承对象从工具箱拖动到设计图面来配置继承

创建继承

  1. 服务器资源管理器数据库资源管理器中,导航到之前创建的 Person 表。

  2. Person 表拖到 O/R 设计器 设计图面上。

  3. 将第二个 Person 表拖到 O/R 设计器 上,并将其名称更改为 Employee

  4. Person 对象中删除 Manager 属性。

  5. Employee 对象中删除 TypeIDFirstNameLastName 属性。 (换句话说,删除 除 Manager 以外的所有属性。

  6. 工具箱的“对象关系设计器”选项卡中,在 PersonEmployee 对象之间创建继承。 为此,请单击工具箱中的“继承”项并释放鼠标按钮。 接下来,单击 Employee 对象,然后单击 O/R 设计器中的 Person 对象。 继承行上的箭头随后指向 Person 对象。

  7. 单击设计界面上的 “继承” 行。

  8. “鉴别器属性”属性 设置为 “类型”。

  9. 派生类鉴别器值 属性设置为 2

  10. 基类鉴别器值 属性设置为 1

  11. “继承默认 ”属性设置为 Person

  12. 构建项目。

查询继承的类并在窗体上显示数据

现在,向查询对象模型中特定类的表单添加一些代码。

创建 LINQ 查询并在窗体上显示结果

  1. ListBox 拖到 Form1 上。

  2. 双击窗体以创建 Form1_Load 事件处理程序。

  3. 将以下代码添加到 Form1_Load 事件处理程序:

    NorthwindDataContext dc = new DataClasses1DataContext();
    var results = from emp in dc.Persons
                  where emp is Employee
                  select emp;
    
    foreach(Employee Emp in results)
    {
        listBox1.Items.Add(Emp.LastName)
    }
    

测试应用程序

运行应用程序并验证列表框中显示的记录是否为所有员工(其 Type 列中值为 2 的记录)。

测试应用程序

  1. F5

  2. 验证是否仅显示其 Type 列中值为 2 的记录。

  3. 关闭窗体。 (在 “调试 ”菜单上,单击“ 停止调试”。)