Я создаю приложение, используя WPF, MVVM и LINQ to SQL. У меня есть коллекция заметок на объект типа Расчет. Поэтому я создал ViewModel-класс для этого называется vmCalculation. Моя проблема в том, что когда я пытаюсь добавить заметку к этому объекту и отправить изменения, «заметка» не передается в базу данных.
Содержание vmCalculation
public class vmCalculation : vmBase
{
Calculation calc;
public ObservableCollection<Note> Notes { get; private set; }
public vmCalculation(Calculation calc)
{
this.calc = calc;
Notes = new ObservableCollection<Note>();
foreach (var n in calc.Notes) Notes.Add(n);
}
public void AddNote()
{
Notes.Add(new Note
{
NoteText = "New note",
NoteType = 1
});
}
internal void Save()
{
foreach (var n in Notes.Where(n => n.NoteId == 0))
calc.Notes.Add(n);
}
}
Метод в vmNotes (ViewModel для "NoteWindow")
public void SaveChanges()
{
CurrentCalc.Save();
DC.SubmitChanges();
}
CurrentCalc - это свойство, которое получает / устанавливает vmCalculation, который я использую в привязке данных (привязка DataGrid к CurrentCalc.Notes).
Когда я запускаю AddNote () на CurrentCalc, представление обновляется просто замечанием «Новая заметка». Но когда я запускаю SaveChanges (), заметка не записывается в базу данных.
Есть мысли по этой проблеме?
Возможной причиной проблемы может быть то, что я не инициализирую DataContext (DC) в vmNotes. Я получаю DataContext из другой ViewModel, чтобы не разрушать MVVM-структуру.