[英]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.