演练:使用单表继承创建 LINQ to SQL 类(O/R 设计器)
发布日期: 2016年4月
对象关系设计器(O/R 设计器)支持通常在关系系统中实现的单表继承。此演练对如何:使用 O/R 设计器配置继承主题中提供的通用步骤进行了扩展,提供一些真实数据演示在 O/R 设计器中对继承的使用。
在本演练中,您将要执行以下任务:
创建一个数据库表,并向其中添加数据。
创建一个 Windows 窗体应用程序。
将一个 LINQ to SQL 文件添加到项目。
创建新的实体类。
配置实体类使用继承。
查询继承类。
在 Windows 窗体上显示数据。
创建要从中继承的表
为了解继承的工作方式,您将创建一个小的 Person 表用作基类,然后创建一个从该表继承的 Employee 对象。
创建基表以演示继承
在**“服务器资源管理器”/“数据库资源管理器”中,右击“表”节点,然后单击“添加新表”**。
备注
可以使用 Northwind 数据库或其他任何可添加表的数据库。
在表设计器中,向该表中添加以下列:
列名 数据类型 允许为 Null ID int False 类型 int True FirstName nvarchar(200) False LastName nvarchar(200) False 经理 int True 将 ID 列设置为主键。
保存该表并将其命名为 Person。
向表中添加数据
为了验证对继承的配置是否正确,表对于单表继承中的每个类都需要一些数据。
向表中添加数据。
在数据视图中打开该表。(在**“服务器资源管理器”/“数据库资源管理器”中右击“Person”表,然后单击“显示表数据”**。)
将下面的数据复制到表中。(您可以在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 应用程序
从**“文件”**菜单创建一个新的项目。
将项目命名为 InheritanceWalkthrough。
备注
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 的记录。
关闭窗体。(在**“调试”菜单上单击“停止调试”**。)
请参阅
O/R 设计器概述
如何:向项目中添加 LINQ to SQL 类(O/R 设计器)
演练:创建 LINQ to SQL 类(O/R 设计器)
如何:分配存储过程以执行更新、插入和删除(O/R 设计器)
LINQ to SQL
如何:使用 Visual Basic 或 C# 生成对象模型