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

 

发布日期: 2016年4月

对象关系设计器(O/R 设计器)支持通常在关系系统中实现的单表继承。此演练对如何:使用 O/R 设计器配置继承主题中提供的通用步骤进行了扩展,提供一些真实数据演示在 O/R 设计器中对继承的使用。

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

  • 创建一个数据库表,并向其中添加数据。

  • 创建一个 Windows 窗体应用程序。

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

  • 创建新的实体类。

  • 配置实体类使用继承。

  • 查询继承类。

  • 在 Windows 窗体上显示数据。

创建要从中继承的表

为了解继承的工作方式,您将创建一个小的 Person 表用作基类,然后创建一个从该表继承的 Employee 对象。

创建基表以演示继承

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

    备注

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

  2. 在表设计器中,向该表中添加以下列:

    列名 数据类型 允许为 Null
    ID int False
    类型 int True
    FirstName nvarchar(200) False
    LastName nvarchar(200) False
    经理 int True
  3. 将 ID 列设置为主键。

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

向表中添加数据

为了验证对继承的配置是否正确,表对于单表继承中的每个类都需要一些数据。

向表中添加数据。

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

  2. 将下面的数据复制到表中。(您可以在Results Pane中选择整行,复制数据并将数据粘贴到表中。)

    ID 类型 FirstName LastName 经理
    1 1 Anne Wallace NULL
    2 1 Carlos Grilo NULL
    3 1 Yael Peled NULL
    4 2 Gatis Ozolins 1
    5 2 Andreas Hauser 1
    6 2 Tiffany Phuvasate 1
    7 2 Alexey Orekhov 2
    8 2 Michał Poliszkiewicz 2
    9 2 Tai Yee 2
    10 2 Fabricio Noriega 3
    11 2 Mindy Martin 3
    12 2 Ken Kwok 3

创建新项目

至此,表已经创建完毕,下面创建一个新项目演示对继承的配置。

创建新的 Windows 应用程序

  1. 从**“文件”**菜单创建一个新的项目。

  2. 将项目命名为 InheritanceWalkthrough。

    备注

    Visual Basic 和 C# 项目中都支持 O/R 设计器。请使用这两种语言之一创建新项目。

  3. 单击**“Windows 窗体应用程序”模板,然后单击“确定”**。有关更多信息,请参见 客户端应用程序

  4. 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”对象删除“Type”“ID”“FirstName”“LastName”属性。(即删除“Manager”**以外的所有属性。)

  6. 从**“工具箱”“对象关系设计器”选项卡上,在“Person”“Employee”对象之间创建“继承”。为此,请单击“工具箱”中的“继承”项,然后松开鼠标按钮。接下来在 O/R 设计器中依次单击“Employee”对象和“Person”对象。继承连线上的箭头将指向“Person”**对象。

  7. 单击设计图面上的**“继承”**连线。

  8. 将**“鉴别器属性”属性设置为“Type”**。

  9. 将**“派生类鉴别器值”属性设置为“2”**。

  10. 将**“基类鉴别器值”属性设置为“1”**。

  11. 将**“继承默认值”属性设置为“Person”**。

  12. 生成项目。

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

您将向窗体中添加一些代码,用于在对象模型中查询特定的类。

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

  1. 将一个**“ListBox”**拖动到 Form1 上。

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

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

    Dim dc As New DataClasses1DataContext  
    Dim results = From emp In dc.Persons _  
        Where TypeOf emp Is Employee _  
        Select emp  
    
    For Each Emp As Employee In results  
        ListBox1.Items.Add(Emp.LastName)  
    Next  
    
    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. 关闭窗体。(在**“调试”菜单上单击“停止调试”**。)

请参阅

O/R 设计器概述
如何:向项目中添加 LINQ to SQL 类(O/R 设计器)
演练:创建 LINQ to SQL 类(O/R 设计器)
如何:分配存储过程以执行更新、插入和删除(O/R 设计器)
LINQ to SQL
如何:使用 Visual Basic 或 C# 生成对象模型