文档主页
MySQL Connector/NET 开发者指南
相关文档 下载本手册
PDF (US Ltr) - 1.3Mb
PDF (A4) - 1.3Mb


MySQL Connector/NET 开发者指南  /  Connector/NET 教程  /  教程:将实体框架实体用作 Windows 窗体数据源

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

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

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

创建新的 Windows 窗体应用程序

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

  1. 在 Visual Studio 中,从主菜单中选择 文件新建,然后选择 项目

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

要获取最新的 MySQL 实体框架程序集,请下载 NuGet 包。

添加实体数据模型

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

  1. 在解决方案资源管理器中,右键单击您的应用程序,然后选择 添加,然后选择 新建项。从 Visual Studio 已安装的模板 中,选择 ADO.NET 实体数据模型(请参见下图)。单击 添加

    图 6.11 添加实体数据模型

    Content is described in the surrounding text.

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

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

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

    • 将实体连接设置保存在 App.config 中,名称为:

      worldEntities

    如果您尚未创建新连接,则可以通过单击 新建连接 来创建新连接(请参见下图)。

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

    Content is described in the surrounding text.

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

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

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

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

    Content is described in the surrounding text.

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

    图 6.14 实体数据模型图

    Content is described in the surrounding text.

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

添加新的数据源

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

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

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

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

    在本教程中,您将选择 city 表。选择 city 表后,单击 下一步

    图 6.15 数据源配置向导

    Content is described in the surrounding text.

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

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

在 Windows 窗体中使用数据源

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

  1. 在“数据源”面板中,选择您刚刚创建的数据源,并将其拖放到“窗体设计器”上。默认情况下,数据源对象将作为数据网格视图控件添加,如下图所示。

    注意

    数据网格视图控件绑定到 cityBindingSource,导航器控件绑定到 cityBindingNavigator

    图 6.16 数据窗体设计器

    Content is described in the surrounding text.

  2. 保存并重新生成解决方案,然后再继续。

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

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

  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 已填充的网格控件

    Content is described in the surrounding text.

添加代码以将更改保存到数据库

此步骤介绍如何添加代码,使您能够将更改保存到数据库。

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

  1. 在窗体设计器中,单击窗体工具栏中的保存图标,并确认其 启用 属性设置为 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. 添加代码后,保存解决方案,然后重新生成解决方案。运行应用程序,并验证在网格中所做的更改是否已保存。