簡體   English   中英

SubmitChanges不是在LINQ to SQL中“提交”

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM