如何:将对象作为项目数据源添加(实体框架)

可以创建基于 Visual Studio 应用程序中的对象的数据源。 在将实体类型定义为项目中的数据源后,通过将**“数据源”**窗口中的项拖到窗体上即可创建显示实体数据的窗体。 这些项将成为窗体上绑定到该数据源的控件。 有关更多信息,请参见将对象绑定到控件(实体框架)

在本主题中,您将为 Adventure Works 销售模型中的 SalesOrderHeader 类型创建一个数据源。 然后,将使用此数据源创建一个 Windows 窗体,其中包含绑定到实体数据的控件。 若要完成这些过程,必须已将 AdventureWorks 销售模型添加到您的项目中,并将项目配置为使用 实体框架 。 为此,请完成如何:使用实体数据模型向导(实体框架) 中的过程。

创建基于 SalesOrderHeader 类型的数据源

  1. 如果您最近添加了实体数据模型项,请生成项目。

  2. 在**“数据”菜单上单击“添加新数据源”**。

  3. 在**“选择数据源类型”页上,选择“对象”**。

  4. 在**“选择希望绑定到的对象”**页上,展开该项目节点,展开项目的命名空间节点,然后在树视图中选择 SalesOrderHeader 类型。

  5. 单击**“完成”**。

    SalesOrderHeader 数据源随即添加到**“数据源”**窗口中。

将数据源绑定控件添加到 Windows 窗体

  1. 在**“数据源”**窗口中,展开 SalesOrderHeader 节点。

  2. SalesOrderHeader 节点中的一个或多个属性拖到窗体上。

    这会在窗体上创建 salesOrderHeaderBindingSourcesalesOrderHeaderBindingNavigator 控件。 此外,还会在窗体上为每个属性创建一个数据绑定控件,并附带经过相应命名的标签控件。

  3. SalesOrderDetail 导航属性拖到窗体上。

  4. 这会创建 salesOrderDetailBindingSource 控件,该控件的 DataSource 属性和 DataMember 属性分别设置为 salesOrderHeaderBindingSourceSalesOrderDetail。 此外,还会在窗体上创建 salesOrderDetailDataGridView 数据绑定控件,并附带经过相应命名的标签控件。

将数据源绑定到对象查询的结果

  1. 打开窗体的代码页,并添加以下 using 语句(在 Visual Basic 中为 Imports):

    using System.Data.Objects;
    
  2. 在定义窗体的分部类中,添加创建 ObjectContext 实例并定义 customerID 常量的以下代码。

    private AdventureWorksEntities context;
    private const int customerId = 277;
    
  3. 在窗体设计器中,双击窗体。

    这会打开窗体的代码页,并创建用于处理窗体的 Load 事件的方法。

  4. Load 事件处理程序中,复制并粘贴以下代码。

    // Initialize the object context.
    context = new AdventureWorksEntities();
    
    try
    {
        // Create a query for orders and related items.
        var orderQuery = context.SalesOrderHeaders
            .Where("it.CustomerID = @customerId",
            new ObjectParameter("customerId", customerId))
            .Include("SalesOrderDetails");
    
        // Set the data source of the binding source to the ObjectResult 
        // returned when the query is executed.
        salesOrderHeaderBindingSource.DataSource = 
            orderQuery.Execute(MergeOption.AppendOnly);
    }
    catch (EntitySqlException ex)
    {
        MessageBox.Show(ex.Message);
    }
    

    此代码执行一个查询,该查询针对特定客户返回 SalesOrderHeader 和相关 SalesOrderDetail 对象的集合,并将 SalesOrderHeader 对象的集合绑定到 salesOrderHeaderBindingSource

另请参见

任务

如何:将对象绑定到 Windows Presentation Foundation 控件(实体框架)
如何:将对象绑定到 Windows 窗体控件(实体框架)

概念

将对象绑定到控件(实体框架)