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