Обновление DataGrid после изменения в БД

141
21 декабря 2019, 23:50

Прошу подсказать какая хорошая практика обновления отображения данных в DataGrid после операций с БД (EntityFramework/WPF). Ранее приходилось после каждого добавления/изменения/удаления повторно запрашивать данные из БД FillViewContracts(), хотелось бы этого избежать и настроить коллекцию на определение изменений в связанной коллекции.

class Contract_ViewModel : INotifyPropertyChanged
{
    private ViewBalanceContract selectedContract;
    //private OrganizationalStructure selectedOrgStruct;
    public ViewBalanceContract SelectedContract
    {
        get { return selectedContract; }
        set
        {
            selectedContract = value;
            OnPropertyChanged("SelectedContract");
        }
    }
    public ObservableCollection<ViewBalanceContract> ViewBalanceContracts { get; set; }
    public Contract_ViewModel()
    {
        ViewBalanceContracts = new ObservableCollection<ViewBalanceContract> (EntityConnection.FillViewContracts());
    }
    public event PropertyChangedEventHandler PropertyChanged;
    public void OnPropertyChanged([CallerMemberName]string prop = "")
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(prop));
    }
}

XAML:

<DataGrid x:Name="dgContractView" ItemsSource="{Binding ViewBalanceContracts, Mode = TwoWay, UpdateSourceTrigger = PropertyChanged }" SelectedItem="{Binding SelectedContract}" HorizontalAlignment="Left" Height="284" Margin="406,116,0,0" VerticalAlignment="Top" Width="1142" AutoGenerateColumns="False" IsReadOnly="True">
        <DataGrid.Columns>
            <DataGridTextColumn x:Name="Status" Binding="{Binding StatusContract }" Header="Статус" Width="45*" />
            <DataGridTextColumn x:Name="NameCustomer" Binding="{Binding NameCustomer}" Header="Заказчик" Width="45*" >
....
</DataGrid>

Загрузка данных:

        internal static IEnumerable<ViewBalanceContract> FillViewContracts()
    {
        var _db = new EntityModel();
        {
            //не выдает информацию return _db.ViewBalanceContracts.Local;
            return _db.ViewBalanceContracts.ToList();
        }
    }

Код формы:

        public MainWindow()
    {
        InitializeComponent();
        DataContext = new Contract_ViewModel();
    }
READ ALSO
Ошибка Unexpected token &lt; in JSON at position 0. Как решить?

Ошибка Unexpected token < in JSON at position 0. Как решить?

Выдает ошибку при оформлении заказа без регистрации

149
Регулярное выражение с заменой

Регулярное выражение с заменой

Нужно заменить все встречающиеся точки кроме таких случаев:

144
Доставка php-кода на бэкэнды

Доставка php-кода на бэкэнды

Категорически приветствую! Допустим, у меня есть локальный gitlab и веб схема, где в роли фронта nginx который просто проксирует все запросы на apache...

157