[英]SubmitChanges not “submitting” in LINQ to SQL
我正在使用WPF,MVVM和LINQ to SQL創建應用程序。 我有一個關於計算類型對象的筆記集合。 因此,我為此創建了一個名為vmCalculation的ViewModel類。 我的問題是,當我嘗試向此對象添加注釋並提交更改時,“注釋”不會提交給數據庫。
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中的方法(“NoteWindow”的ViewModel)
public void SaveChanges()
{
CurrentCalc.Save();
DC.SubmitChanges();
}
CurrentCalc是一個獲取/設置我在數據綁定中使用的vmCalculation的屬性(將DataGrid綁定到CurrentCalc.Notes)。
當我在CurrentCalc上運行AddNote()時,使用“新筆記”-note更新視圖。 但是,當我運行SaveChanges()時,注釋不會寫入數據庫。
有關這個問題的任何想法?
問題的可能原因可能是,我沒有在vmNotes中初始化DataContext(DC)。 我從另一個ViewModel獲取DataContext,這樣我就不會破壞MVVM結構。
在提交之前,必須將新實體添加到datacontext。 例:
DC.Notes.InsertOnSubmit(NewNote);
DC.SubmitChanges();
想到我的問題的可能解決方案。
我稍微更新了vmNotes類上的SaveChanges()方法。
public void SaveChanges()
{
var newNotes = currentCalc.Notes.Where(n => n.NoteId == 0);
DC.Notes.InsertAllOnSubmit(newNotes);
DC.SubmitChanges();
}
}
更新03/09/2011:
無論如何,上面的代碼都不需要。
我發現我有DataModel類的多個(和靜態)實例。
我刪除了其中的一些,現在我的原始代碼工作得很好!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.