使用 O/R 设计器创建 LINQ to SQL 类

更新: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 设计器

  1. 在“文件”菜单上单击“新建项目”。

  2. 在“新建项目”对话框中,单击“Windows 窗体应用程序”,将其命名为 LINQToSQLSample,然后单击“确定”。

    一个新的 Windows 窗体项目随即打开。

  3. 在“项目”菜单上单击“添加新项”。

  4. 单击“LINQ to SQL 类”模板,然后在“名称”框中键入“NorthwindSample.dbml”。

  5. 单击“添加”。

    此时会将一个空的“LINQ to SQL 类”文件 (NorthwindSample.dbml) 添加到项目中,并打开 O/R 设计器。

O/R 设计器 由两个设计图面组成:左侧的实体窗格和右侧的方法窗格区域。实体窗格是显示文件中定义的实体类的主要设计图面。方法窗格是显示映射到已存过程和函数的 DataContext 方法的设计图面。可以通过右击 O/R 设计器,然后单击“隐藏方法窗格”来隐藏方法窗格。在本课中不会使用方法窗格,但您可以在 DataContext 方法(O/R 设计器)中了解有关该窗格的更多信息。

单击主设计图面,并在“属性”窗口中验证其名称是否为 NorthwindSampleDataContext。通过将数据库表从“数据库资源管理器”拖到 O/R 设计器 图面上,可以创建实体类。但是必须先创建到数据库的连接。此过程类似于如何:连接到数据库 (C#) 中描述的过程,不过此处将使用 SQL Server Express 数据库。

连接到 Northwind 示例数据库

  1. 在“视图”菜单上指向“其他窗口”,然后单击“数据库资源管理器”。

    “数据库资源管理器”随即打开。

  2. 单击“连接到数据库”按钮。

    “添加连接”对话框随即打开。

  3. 在“添加连接”对话框中,确保“数据源”为“Microsoft SQL Server 数据库文件”。

  4. 单击“浏览”并选择“Northwind.mdf”数据库。

  5. 单击“测试连接”以验证连接是否成功。

  6. 单击“确定”关闭“添加连接”对话框。

创建实体类

现在,Northwind 数据库中的表在“数据库资源管理器”中是可见的。可以将这些表从“数据库资源管理器”拖到 O/R 设计器 上。这会自动创建实体类,这些实体类的属性映射到选定表中的列。

创建实体类

  1. 在“数据库资源管理器”中,展开“Northwind.mdf”,然后展开“表”。

  2. 将“Customers”从“数据库资源管理器”拖到 O/R 设计器图面上。如果系统提示是否将数据文件复制到项目中,请单击“是”。

    将创建一个名为 Customer 的实体类。该类的属性与 Customers 表中的列相对应。

    Bb655880.alert_note(zh-cn,VS.90).gif说明:

    该实体类的名称是 Customer 而不是 Customers。这种重命名行为称为“复数化”。可在“选项”对话框中启用或禁用此行为。有关更多信息,请参见“选项”对话框 (Visual Studio)如何:打开和关闭复数形式(O/R 设计器)

  3. 将“Orders”从“数据库资源管理器”拖到 O/R 设计器图面上。

    将创建一个名为 Order 的实体类。请注意,Order 类与 Customer 实体类之间存在关系(称为关联)。Order 类的属性与 Orders 表中的列相对应。

现在已创建了实体类,您可以通过运行“数据源配置向导”将这些类添加到“数据源”窗口中。

将实体类作为对象数据源添加到“数据源”窗口中

  1. 在“生成”菜单上,单击“生成解决方案”。

  2. 在“数据”菜单上单击“显示数据源”。

  3. 在“数据源”窗口中,单击“添加新数据源”按钮。

  4. 单击“选择数据源类型”页上的“对象”,然后单击“下一步”。

  5. 展开“LINQToSQLSample”,然后单击“Customer”类。

    Bb655880.alert_note(zh-cn,VS.90).gif说明:

    如果“Customer”类不可用,则单击“取消”,生成项目,然后重新运行向导。

  6. 单击“完成”以创建数据源并将“Customer”实体类添加到“数据源”窗口。

将 Windows 窗体上的控件绑定到实体类

通过将表或字段从“数据源”窗口拖到 Windows 窗体上,可以将被数据绑定到实体类的控件添加到该窗体中。

添加绑定到实体类的控件

  1. 在“解决方案资源管理器”中右击“Form1”,然后单击“视图设计器”。

  2. 在“数据源”窗口中,展开“Customer”。

  3. 单击“CompanyName”旁边的下拉箭头,然后单击“Label”。

  4. 将“CompanyName”拖到窗体上。

  5. 将“Orders”从“数据源”窗口拖到 Form1 中。将其放置在“CompanyName”下方。

  6. 在“解决方案资源管理器”中右击“Form1”,然后单击“查看代码”。

  7. 将下面的代码添加到窗体中 Form 类的顶部,但应将其放在任意特定方法之外。

    private NorthwindSampleDataContext northwindSampleDataContext1
        = new NorthwindSampleDataContext();
    
  8. 为 Form_Load 事件创建一个事件处理程序,并将下面的代码添加到该事件处理程序中:

    customerBindingSource.DataSource
        = northwindSampleDataContext1.Customers;
    
  9. 按 F5 运行代码。

  10. 当窗体打开时,单击 bindingNavigatorMoveNextItem 按钮,滚动浏览公司并验证 ordersDataGridView 是否更新为显示选定客户的订单。

保存更改

在将控件添加到 O/R 设计器时,不会启用“bindingNavigator”上的“保存”按钮。若要使用户可以保存更改,必须先启用“保存”按钮,然后添加用于保存已更改数据的代码。

启用“保存”按钮

  1. 单击“bindingNavigator”上的“保存”按钮。(该按钮带有软盘图标。)

  2. 在“属性”窗口中,将“Enabled”属性设置为“True”。

  3. 双击该“保存”按钮创建一个事件处理程序,并切换到代码编辑器。

  4. 将下面的代码添加到“保存”按钮事件处理程序中:

    northwindSampleDataContext1.SubmitChanges();
    
  5. 按 F5 运行代码。

  6. 更改某一“Shipped Date”字段中的值,然后按 TAB 键提交更改。

  7. 单击“保存”按钮。

  8. 关闭窗体。

  9. 按 F5,并验证所做的更改是否已保存。

请参见

任务

如何:连接到数据库 (C#)

如何:在窗体上显示相关数据

如何:对 LINQ 查询执行数据绑定

概念

在 C# 中使用 LINQ

其他资源

连接到数据 (Visual C#)