Обновление привязки данных EF в WPF

#c# #.net #wpf #entity-framework #data-binding

#c# #.net #wpf #entity-framework #привязка данных

Вопрос:

Я использую Entity Framework, ObjectResult исходящий из Execute метода, для привязки данных к элементу управления WPF, как здесь:

 using System;
using System.Data;
using System.Data.Objects;
using System.Windows;
using System.Linq;

namespace Microsoft.Samples.Edm
{
 /// <summary>
     /// Interaction logic for SalesOrders.xaml
     /// </summary>
    public partial class SalesOrders : Window
    {
        private AdventureWorksEntities context;
        private int customerId = 277;

    private void SalesOrdersForm_Loaded(object sender, RoutedEventArgs e)
    {
        // Instantiate the ObjectContext.
        context = new AdventureWorksEntities();

        // Define a query that returns orders for a customer.
        // Because lazy loading is on by default, SalesOrderDetails
        // related to a SalesOrderHeader will be loaded when the query
        // is executed.
        var query = from o in context.SalesOrderHeaders
                     where o.CustomerID == customerId
                     select o;

        // Execute the query and bind the result to the OrderItems control.
        this.orderItemsGrid.DataContext = ((ObjectQuery)query).Execute(MergeOption.AppendOnly);
    }

    private void buttonClose_Click(object sender, RoutedEventArgs e)
    {
        this.Close();
    }
    public SalesOrders()
    {
        InitializeComponent();
    }
}
}
  

Пример взят из MSDN

Это работает нормально, но как мне обновить привязку? Либо программно, либо при изменении базы данных?

Ответ №1:

Код SalesOrdersForm_Loaded должен быть отделен от этого события.

Поместите этот код в функцию. и вызовите его при загрузке формы. Теперь вы можете вызывать эту функцию на основе ваших требований.

Я надеюсь, что это имеет смысл.

Редактировать

Вы можете вызвать эту функцию при нажатии кнопки / таймере или любом событии в зависимости от вашего требования обновить привязки