Как отобразить в модели представления элемент, добавленный в DbSet?

Имеется метод AddNewElement. Метод принимает экземпляр вновь создаваемого объекта, запускает окно чтобы пользователь ввел данные и добавляет отредактированный объект в соответствующий DbSet:

//

    public static void AddNewElement<Telement>(Telement newElement, VM viewModel, DbSet<Telement> targetDbSet) where Telement : class
    {
        //Инициализирует окно соответствующее переданной модели представления и запускает его.
        Window win = WindowFactory.CreateWindowWithVM(viewModel);
        win.ShowDialog();

        if (viewModel.DialogResult)
        {
            targetDbSet.Add(newElement);
            DatabaseModel.db.SaveChanges();
        }
    }

Класс модели представления, использующий этот метод. Используется экземпляр класса Participant Selected Client из ObservableCollection<Participant> Clients

public class WindowMainVM :VM
{
    public WindowMainVM(List<Participant> participants)
    {

        Clients = new ObservableCollection<Participant>(participants);
        AddClient = new RelayCommand(x =>
        {
            Participant newPart = new Participant(true, isNewCompany);
            RelayCommand.AddNewElement(newPart, new WindowEditParticipantVM(newPart), DatabaseModel.db.Participants);
        });
    }
    public ObservableCollection<Participant> Clients { get; set; }
}

Проблема в том, что я не вижу изменения в DbSet не приводят к автоматическим изменениям в ObservableCollection<Participant> Clients модели представления. Требуется перезагрузка программы чтобы изменения вступили в силу. Можно параллельно добавлять новый объект в ObservableCollection но это лишние действия и потенциальная опасность "рассинхронизации" модели и модели представления. Можно также каждый раз заново загружать модель из базы данных, но это потенциально затратно по вычислениям. Как наиболее оптимально внести изменения в модель чтобы они отображались в модели представления?


Ответы (0 шт):