对象关系设计器(O/R 设计器)支持通常在关系系统中实现的单表继承。此演练对如何:使用 O/R 设计器配置继承主题中提供的通用步骤进行了扩展,提供一些真实数据演示在 O/R 设计器中对继承的使用。
在本演练中,您将要执行以下任务:
- 创建一个数据库表,并向其中添加数据。 
- 创建一个 Windows 窗体应用程序。 
- 将一个 LINQ to SQL 文件添加到项目。 
- 创建新的实体类。 
- 配置实体类使用继承。 
- 查询继承类。 
- 在 Windows 窗体上显示数据。 
创建要从中继承的表
为了解继承的工作方式,您将创建一个小的 Person 表用作基类,然后创建一个从该表继承的 Employee 对象。
创建基表以演示继承
- 在**“服务器资源管理器”/“数据库资源管理器”中,右击“表”节点,然后单击“添加新表”**。 .gif) 注意 注意- 可以使用 Northwind 数据库或其他任何可添加表的数据库。 
- 在表设计器中,向该表中添加以下列: - 列名 - 数据类型 - 允许为 Null - ID - int - False - 类型 - int - True - FirstName - nvarchar(200) - False - LastName - nvarchar(200) - False - 经理 - int - True 
- 将 ID 列设置为主键。 
- 保存该表并将其命名为 Person。 
向表中添加数据
为了验证对继承的配置是否正确,表对于单表继承中的每个类都需要一些数据。
向表中添加数据。
- 在数据视图中打开该表。(在**“服务器资源管理器”/“数据库资源管理器”中右击“Person”表,然后单击“显示表数据”**。) 
- 将下面的数据复制到表中。(您可以在“结果”窗格中选择整行,复制数据并将数据粘贴到表中。) - 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 应用程序
- 从**“文件”**菜单创建一个新的项目。 
- 将项目命名为 InheritanceWalkthrough。 .gif) 注意 注意- Visual Basic 和 C# 项目中都支持 O/R 设计器。请使用这两种语言之一创建新项目。 
- 单击**“Windows 窗体应用程序”模板,然后单击“确定”**。有关更多信息,请参见 开发客户端应用程序。 
- InheritanceWalkthrough 项目即被创建并添加到**“解决方案资源管理器”**中。 
将 LINQ to SQL 类文件添加到项目
将 LINQ to SQL 文件添加到项目
- 在**“项目”菜单上单击“添加新项”**。 
- 单击**“LINQ to SQL 类”模板,然后单击“添加”**。 - .dbml 文件即添加到项目,O/R 设计器打开。 
使用 O/R 设计器创建继承
通过将**“继承”对象从“工具箱”**拖动到设计图面来配置继承。
创建继承
- 在**“服务器资源管理器”/“数据库资源管理器”中,定位到之前创建的“Person”**表。 
- 将**“Person”**表拖动到 O/R 设计器设计图面上。 
- 将另一个**“Person”**表拖动到 O/R 设计器并将其名称更改为“Employee”。 
- 从**“Person”对象删除“Manager”**属性。 
- 从**“Employee”对象删除“Type”、“ID”、“FirstName”和“LastName”属性。(即删除“Manager”**以外的所有属性。) 
- 从**“工具箱”的“对象关系设计器”选项卡上,在“Person”和“Employee”对象之间创建“继承”。为此,请单击“工具箱”中的“继承”项,然后松开鼠标按钮。接下来在 O/R 设计器中依次单击“Employee”对象和“Person”对象。继承连线上的箭头将指向“Person”**对象。 
- 单击设计图面上的**“继承”**连线。 
- 将**“鉴别器属性”属性设置为“Type”**。 
- 将**“派生类鉴别器值”属性设置为“2”**。 
- 将**“基类鉴别器值”属性设置为“1”**。 
- 将**“继承默认值”属性设置为“Person”**。 
- 生成项目。 
查询继承类并在窗体上显示数据
您将向窗体中添加一些代码,用于在对象模型中查询特定的类。
创建一个 LINQ 查询并在窗体上显示结果
- 将一个**“ListBox”**拖动到 Form1 上。 
- 双击窗体以创建 Form1_Load 事件处理程序。 
- 将下面的代码添加到 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 的记录)。
测试应用程序
- 按 F5。 
- 检验是否仅显示了“Type”列值为 2 的记录。 
- 关闭窗体。(在**“调试”菜单上单击“停止调试”**。) 
请参阅
任务
如何:向项目中添加 LINQ to SQL 类(O/R 设计器)
如何:使用 Visual Basic 或 C# 生成对象模型