本教程介绍如何使用 Microsoft Visual Studio 从实体数据模型中的实体创建 Windows 窗体数据源。步骤是:
要执行本教程中的步骤,首先安装
world
数据库示例,您可以从MySQL 文档页面下载该示例。您还可以在同一页面上找到有关如何安装数据库的详细信息。
第一步是创建一个新的 Windows 窗体应用程序。
在 Visual Studio 中,选择File、 New,然后 从主菜单中 选择Project 。
选择Windows 窗体应用程序 安装模板。单击确定。解决方案已创建。
要获取适用于 MySQL 的最新实体框架程序集,请下载 NuGet 包。或者,使用MySQL for Visual Studio 1.2.9(或更高版本)提供的MySQL应用配置工具获取最新包并配合配置。有关使用该工具的更多信息,请参阅 实体框架。
要将实体数据模型添加到您的解决方案,请执行以下操作:
在 Solution Explorer 中,右键单击您的应用程序并依次选择Add和New Item。从Visual Studio installed templates中,选择ADO.NET Entity Data Model(见下图)。单击 添加。
您现在将看到实体数据模型向导。您将使用该向导从
world
数据库示例生成实体数据模型。从数据库中选择图标 EF 设计器(或 在旧版本的 Visual Studio 中从数据库生成)。单击下一步。您现在可以选择
localhost(world)
之前与数据库建立的连接。选择以下项目:是的,在连接字符串中包含敏感数据。
将实体连接设置保存
App.config
为:worldEntities
如果您还没有这样做,此时您可以通过单击新建连接来创建新连接(参见下图)。有关创建数据库连接的其他说明,请参阅建立连接。
记下要在 中使用的实体连接设置
App.Config
,因为稍后将使用这些设置来编写必要的控制代码。单击 下一步。实体数据模型向导连接到数据库。
如下图所示,您将看到数据库的树结构。从这里您可以选择要包含在模型中的对象。如果您还创建了视图和存储例程,这些项目将与任何表格一起显示。在此示例中,您只需选择表格。单击完成创建模型并退出向导。
Visual Studio 生成一个包含三个表(city、country 和 countrylanguage)的模型,然后显示它,如下图所示。
从 Visual Studio 主菜单中,选择“ 构建” ,然后选择“构建解决方案”,以确保到目前为止所有内容都能正确编译。
您现在将向您的项目添加一个新的数据源,并查看如何使用它来读取和写入数据库。
此步骤描述如何在 Windows 窗体中使用数据源。
您现在可以添加代码以确保数据网格视图控件将使用城市数据库表中的数据进行填充。
双击窗体以访问其代码。
添加以下代码以实例化实体数据模型
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(); } } }
保存并重建解决方案。
运行解决方案。确认网格已填充(参见下图的示例)并且您可以浏览数据库。
此步骤说明如何添加使您能够将更改保存到数据库的代码。
绑定源组件确保在数据网格视图控件中所做的更改也对绑定到它的实体类进行。但是,该数据需要从实体保存回数据库本身。这可以通过启用导航器控件中的保存按钮并添加一些代码来实现。
在窗体设计器中,单击窗体工具栏中的保存图标并确认其Enabled属性设置为
True
。双击窗体工具栏中的保存图标以显示其代码。
添加以下(或类似的)代码以确保当用户单击应用程序中的保存按钮时将数据保存到数据库中。
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(); } } }
添加代码后,保存解决方案,然后重新生成它。运行应用程序并验证在网格中所做的更改是否已保存。