Как отобразить в модели представления элемент, добавленный в 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 но это лишние действия и потенциальная опасность "рассинхронизации" модели и модели представления. Можно также каждый раз заново загружать модель из базы данных, но это потенциально затратно по вычислениям. Как наиболее оптимально внести изменения в модель чтобы они отображались в модели представления?