MySQL 连接器/NET 开发人员指南  / 第 6 章连接器/NET 教程  /  6.3 教程:使用实体框架实体作为 Windows 窗体数据源

6.3 教程:使用实体框架实体作为 Windows 窗体数据源

本教程介绍如何使用 Microsoft Visual Studio 从实体数据模型中的实体创建 Windows 窗体数据源。步骤是:

要执行本教程中的步骤,首先安装 world数据库示例,您可以从MySQL 文档页面下载该示例。您还可以在同一页面上找到有关如何安装数据库的详细信息。

创建新的 Windows 窗体应用程序

第一步是创建一个新的 Windows 窗体应用程序。

  1. 在 Visual Studio 中,选择FileNew,然后 从主菜单中 选择Project 。

  2. 选择Windows 窗体应用程序 安装模板。单击确定。解决方案已创建。

要获取适用于 MySQL 的最新实体框架程序集,请下载 NuGet 包。或者,使用MySQL for Visual Studio 1.2.9(或更高版本)提供的MySQL应用配置工具获取最新包并配合配置。有关使用该工具的更多信息,请参阅 实体框架

添加实体数据模型

要将实体数据模型添加到您的解决方案,请执行以下操作:

  1. 在 Solution Explorer 中,右键单击您的应用程序并依次选择AddNew Item。从Visual Studio installed templates中,选择ADO.NET Entity Data Model(见下图)。单击 添加

    图 6.11 添加实体数据模型

    内容在周围的文字中描述。

  2. 您现在将看到实体数据模型向导。您将使用该向导从 world数据库示例生成实体数据模型。从数据库中选择图标 EF 设计器(或 在旧版本的 Visual Studio 中从数据库生成)。单击下一步

  3. 您现在可以选择localhost(world) 之前与数据库建立的连接。选择以下项目:

    • 是的,在连接字符串中包含敏感数据。

    • 将实体连接设置保存 App.config为:

      worldEntities

    如果您还没有这样做,此时您可以通过单击新建连接来创建新连接(参见下图)。有关创建数据库连接的其他说明,请参阅建立连接

    图 6.12 实体数据模型向导 - 连接

    内容在周围的文字中描述。

    记下要在 中使用的实体连接设置 App.Config,因为稍后将使用这些设置来编写必要的控制代码。单击 下一步

  4. 实体数据模型向导连接到数据库。

    如下图所示,您将看到数据库的树结构。从这里您可以选择要包含在模型中的对象。如果您还创建了视图和存储例程,这些项目将与任何表格一起显示。在此示例中,您只需选择表格。单击完成创建模型并退出向导。

    图 6.13 实体数据模型向导 - 对象和设置

    内容在周围的文字中描述。

    Visual Studio 生成一个包含三个表(city、country 和 countrylanguage)的模型,然后显示它,如下图所示。

    图 6.14 实体数据模型图

    内容在周围的文字中描述。

  5. 从 Visual Studio 主菜单中,选择“ 构建” ,然后选择“构建解决方案”,以确保到目前为止所有内容都能正确编译。

添加新数据源

您现在将向您的项目添加一个新的数据源,并查看如何使用它来读取和写入数据库。

  1. 从 Visual Studio 主菜单中选择 数据,然后选择添加新数据源。您将看到数据源配置向导。

  2. 选择对象图标。单击 下一步

  3. 选择要绑定的对象。展开树,如下图所示。

    在本教程中,您将选择城市表。选择城市表后,单击 Next

    图 6.15 数据源配置向导

    内容在周围的文字中描述。

  4. 该向导将确认要添加城市对象。单击完成

  5. 城市对象现在将出现在“数据源”面板中。如果未显示“数据源”面板,请选择 “数据” ,然后从 Visual Studio 主菜单中选择“显示数据源”。然后将显示停靠的面板。

在 Windows 窗体中使用数据源

此步骤描述如何在 Windows 窗体中使用数据源。

  1. 在 Data Sources 面板中,选择您刚刚创建的 Data Source 并将其拖放到 Form Designer 上。默认情况下,数据源对象将作为数据网格视图控件添加,如下图所示。

    笔记

    Data Grid View 控件绑定到 cityBindingSource,Navigator 控件绑定到cityBindingNavigator

    图 6.16 数据表单设计器

    内容在周围的文字中描述。

  2. 在继续之前保存并重建解决方案。

添加代码以填充数据网格视图

您现在可以添加代码以确保数据网格视图控件将使用城市数据库表中的数据进行填充。

  1. 双击窗体以访问其代码。

  2. 添加以下代码以实例化实体数据模型 EntityContainer对象并从数据库中检索数据以填充控件。

    using System.Windows.Forms;
    
    namespace WindowsFormsApplication4
    {
       public partial class Form1 : Form
       {
          worldEntities we;
    
          public Form1()
          {
              InitializeComponent();
          }
     
          private void Form1_Load(object sender, EventArgs e)
          {
              we = new worldEntities();
              cityBindingSource.DataSource = we.city.ToList();
          }
       }
    }
  3. 保存并重建解决方案。

  4. 运行解决方案。确认网格已填充(参见下图的示例)并且您可以浏览数据库。

    图 6.17 填充的网格控件

    内容在周围的文字中描述。

添加代码以保存对数据库的更改

此步骤说明如何添加使您能够将更改保存到数据库的代码。

绑定源组件确保在数据网格视图控件中所做的更改也对绑定到它的实体类进行。但是,该数据需要从实体保存回数据库本身。这可以通过启用导航器控件中的保存按钮并添加一些代码来实现。

  1. 在窗体设计器中,单击窗体工具栏中的保存图标并确认其Enabled属性设置为True

  2. 双击窗体工具栏中的保存图标以显示其代码。

  3. 添加以下(或类似的)代码以确保当用户单击应用程序中的保存按钮时将数据保存到数据库中。

          public Form1()
          {
              InitializeComponent();
          }
     
          private void Form1_Load(object sender, EventArgs e)
          {
              we = new worldEntities();
              cityBindingSource.DataSource = we.city.ToList();
          }
          private void cityBindingNavigatorSaveItem_Click(object sender, EventArgs e)
          {
              we.SaveChanges();
          }
       }
    }
  4. 添加代码后,保存解决方案,然后重新生成它。运行应用程序并验证在网格中所做的更改是否已保存。