创建 LINQ to SQL 类:使用 O/R 设计器
更新:2007 年 11 月
使用对象关系设计器(O/R 设计器)可以将 LINQ to SQL 类映射到数据库中的表。这些映射的类也称为“实体类”。 实体类的属性映射到表的列,您可以将数据绑定到 Windows 窗体上的控件。若要了解有关 LINQ to SQL 的更多信息,请参见在 Visual Basic 速成版中使用 LINQ。
在本课中,您将学习如何使用 O/R 设计器创建映射到 Northwind 数据库中的表的实体类。然后将在 Windows 窗体应用程序上显示数据。
先决条件
如果在安装 Visual Basic 速成版时未安装 SQL Server Express Edition,则必须在继续下面的步骤前进行安装。LINQ to SQL 中不支持 SQL Server Compact 3.5 数据库。有关如何获取 SQL Server Express Edition 的信息,请参见如何:安装示例数据库中的“获取 SQL Server Express Edition”部分。
若要完成本课,必须能够访问 SQL Server 版本的 Northwind 示例数据库。有关更多信息,请参见如何:安装示例数据库。
试一试!
打开 O/R 设计器
在“文件”菜单上单击“新建项目”。
在“新建项目”对话框中的“模板”窗格中,单击“Windows 窗体应用程序”,将项目命名为“LINQToSQLSample”,然后单击“确定”。
一个新的 Windows 窗体项目随即打开。
在“项目”菜单上单击“添加新项”。
单击“LINQ to SQL 类”模板,然后在“名称”框中键入“NorthwindSample.dbml”。
单击“添加”。
一个空的“LINQ to SQL 文件”(Northwind.dbml) 即被添加到该项目中,并且 O/R 设计器将打开。
O/R 设计器由两个设计图面组成:左侧的“实体”窗格,以及右侧的“方法”窗格区域。“实体”窗格是主设计图面,其中显示在文件中定义的实体类。“方法”窗格是显示映射到存储过程和函数的 DataContext 方法的设计图面。通过右击 O/R 设计器,然后单击“隐藏方法窗格”,可以隐藏“方法”窗格。在本课中不会使用“方法”窗格,但是您可以在 DataContext 方法(O/R 设计器)中了解有关该窗格的更多信息。
单击主设计图面,并通过在“属性窗口”中查看“名称”属性来验证其名称是否为 NorthwindSampleDataContext。通过将数据库表从“数据库资源管理器”拖动到 O/R 设计器图面上,可以创建实体类。但是必须先创建到数据库的连接。此过程与获取所需的信息:连接到现有的数据库中介绍的过程类似,只不过在本课中会使用 SQL Server Express 数据库。
连接到 Northwind 数据库
在“视图”菜单上单击“数据库资源管理器”。
“数据库资源管理器”随即打开。
在“数据库资源管理器”工具栏中单击“连接到数据库”按钮。
在“选择数据源”窗口中单击“Microsoft SQL Server 数据库文件”,然后单击“继续”。
“添加连接”对话框随即打开。
在“添加连接”对话框中,确保数据源为“Microsoft SQL Server 数据库文件 (SqlClient)”。
单击“浏览”,然后找到并选择“Northwind.mdf”数据库。单击“打开”。
单击“测试连接”以验证连接是否成功。
单击“确定”关闭“添加连接”对话框。
创建实体类
现在,Northwind 数据库中的表在“数据库资源管理器”中是可见的。可以将这些表从“数据库资源管理器”拖到“O/R 设计器”上。这会自动创建实体类,这些实体类的属性映射到从“数据库资源管理器”中拖动的表中的列。
创建实体类
在“数据库资源管理器”中,展开“Northwind.mdf”,然后展开“表”。
将“Customers”从“数据库资源管理器”拖到 O/R 设计器图面上。如果系统提示是否将数据文件复制到项目中,请单击“是”。
将创建一个名为“Customer”的实体类。该类具有与“Customers”表中的列相对应的属性。
将“Orders”从“数据库资源管理器”拖到 O/R 设计器图面上。
将创建一个名为“Order”的实体类,该类与“Customer”实体类之间具有关联(关系)。该类的属性与“Orders”表中的列相对应。
现在已创建了实体类,您可以通过运行“数据源配置向导”将这些类添加到“数据源”窗口中。
将实体类作为对象数据源添加到“数据源”窗口中
在“生成”菜单上单击“生成 LINQToSQLSample”。
在“数据”菜单上单击“显示数据源”。
在“数据源”窗口中,单击“添加新数据源”。
单击“选择数据源类型”页上的“对象”,然后单击“下一步”。
展开“LINQToSQLSample”节点,并找到“Customer”类。
说明: 如果“Customer”类不可用,则单击“取消”,生成项目,然后重新运行向导。
单击“完成”以创建数据源并将“Customer”实体类添加到“数据源”窗口。
将 Windows 窗体上的控件绑定到实体类
通过将表或字段从“数据源”窗口拖到 Windows 窗体上,可以将被数据绑定到实体类的控件添加到该窗体中。
添加绑定到实体类的控件
在“解决方案资源管理器”中右击 Form1,然后单击“视图设计器”。
在“数据源”窗口中,展开“Customer”。
单击“CompanyName”旁边的下拉箭头,然后单击“Label”。
将“CompanyName”拖到窗体上。
这会将一个标签和一个导航工具栏添加到窗体上。
将“Orders”从“数据源”窗口拖到 Form1 中。将其放置在“CompanyName”下方。
在“解决方案资源管理器”中右击 Form1,然后单击“查看代码”。
将下面的代码添加到窗体中 Form 类的顶部,任何特定方法之外。
Private NorthwindSampleDataContext1 As New _ NorthwindSampleDataContext
双击该窗体,为 Form_Load 事件创建一个事件处理程序。将以下代码添加到事件处理程序中:
CustomerBindingSource.DataSource = _ NorthwindSampleDataContext1.Customers()
按 F5 运行代码。
当窗体打开时,在工具栏上单击“移到下一条”按钮,滚动浏览公司并验证订单数据是否已更新为显示选定客户的订单。
保存更改
在将控件添加到 O/R 设计器时,导航工具栏上的“保存数据”按钮并未启用。若要使用户可以保存更改,必须先启用“保存”按钮,然后添加用于保存已更改数据的代码。
启用保存按钮
在“设计”视图中,选择导航工具栏上的保存按钮。(该按钮带有软盘图标。)
在“属性”窗口中,将“Enabled”属性设置为“True”。
双击保存按钮创建一个事件处理程序并切换到代码编辑器。
将下面的代码添加到保存按钮事件处理程序中:
NorthwindSampleDataContext1.SubmitChanges()
按 F5 运行代码。
更改某一 Shipped Date 字段中的值,然后按 Tab 键提交更改。
单击“保存数据”按钮。
关闭窗体。
按 F5,验证所做的更改是否已保存。
后续步骤
在本课中,您学习了如何使用 O/R 设计器创建 LINQ to SQL 类。在下一课中,您将学习如何使用 LINQ 查询绑定数据。若要了解有关如何在应用程序中使用 LINQ 的更多信息,请参见在 Visual Basic 速成版中使用 LINQ。
下一课:使用 LINQ 将数据绑定到控件