簡體   English   中英

SubmitChanges不更新

[英]SubmitChanges not updating

首先,我想准確地說,我閱讀了有關SubmitChanges問題的所有相關主題,但是找不到解決我的問題的任何方法...我有幾個表可以使用相同的方式(除復合主鍵外)正常運行,但是這不是,我只是不明白為什么。 這是桌子:

CREATE TABLE [dbo].[Trainings] (
    [playerId] INT NOT NULL,
    [stepId]  INT NOT NULL,
    [value]   INT NOT NULL,
    CONSTRAINT [PK_Trainings] PRIMARY KEY CLUSTERED ([playerId] ASC, [stepId] ASC)
);

相關類別:

[Table(Name = "Trainings")]
public class Training
{
    [Column(IsPrimaryKey = true)] public int PlayerID { get; set; }
    [Column(IsPrimaryKey = true, Name = "stepId")] public int Step { get; set; }
    [Column] public int Value { get; set; }

    public Training(int playerId, int step, int value)
    {
        PlayerID = playerId;
        Step = step;
        Value = value;
    }
}

和數據庫更新調用:

public class Database : DataContext
{
    public Table<Training> Trainings;

    public Training GetTraining(int playerId, int step)
    {
        Training training = Trainings.Where(t => t.PlayerID == playerId && t.Step == step).Single();
        return training;
    }

    public void UpdateTraining(Training training)
    {
        Training DBtraining = GetTraining(training.PlayerID, training.Step);
        DBtraining = training;
        SubmitChanges();
    }
}

我試圖刪除復合主鍵並添加一個唯一的“ id”鍵,但是該表無論如何都不會更新。 我發現使之起作用的唯一方法是刪除舊行並使用新值添加新行,但這顯然很可怕。

當我嘗試在其中添加一些斷點時,我收到了此錯誤消息,該消息在正常模式下不顯示:

在調用SubmitChanges期間無法執行該操作。

編輯:

似乎該問題是由於SQL異常引起的。 這是異常tracktrace:

System.Exception.StackTrace.get
System.Data.Linq.DataContext.CheckNotInSubmitChanges()
System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)
System.Data.Linq.DataContext.SubmitChanges()
Database.UpdateTraining(Training training)

您沒有做任何更改。 這行代碼只會為您的局部變量DBtraining分配一個新值:

DBtraining = training;

您可能想做的是:

DBtraining.Value = training.Value

這將更新數據庫中當前實例的Value 然后,當您調用SubmitChanges時將保存該文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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