我正在創建一個使用WPF,MVVM和LINQ to SQL的應用程序。對於Calculation類型的對象,我有一組註釋。因此,我創建了一個名爲vmCalculation的ViewModel類。我的問題是,當我嘗試向此對象添加註釋並提交更改時,「註釋」未提交到數據庫。在vmNotes vmCalculationSubmitChanges不「提交」在LINQ to SQL
的內容
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);
}
}
方法(視圖模型爲 「NoteWindow」)
public void SaveChanges()
{
CurrentCalc.Save();
DC.SubmitChanges();
}
CurrentCalc是獲取一個屬性/設置一個vmCalculation我在數據綁定使用(綁定一個DataGrid到CurrentCalc.Notes)。
當我在CurrentCalc上運行AddNote()時,視圖用「New note」-note更新得很好。但是,當我運行SaveChanges()時,筆記不會寫入數據庫。
對這個問題有什麼想法?
這個問題的一個可能的原因可能是,我不初始化vmNotes中的DataContext(DC)。我從另一個ViewModel獲取DataContext,這樣我就不會銷燬MVVM結構。
計算是你的DataContext? – Magnus
我的LINQ to SQL DataContext(DC)在vmNotes有權訪問的ViewModel vmMain中定義。計算是筆記所屬的對象。 –