SubmitChanges not updating

本文关键字:updating not SubmitChanges | 更新日期: 2023-09-27 17:52:35

首先,我想准确地说,我阅读了关于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)

SubmitChanges not updating

您没有做任何更改。这行代码只会给局部变量DBtraining赋一个新值:

DBtraining = training;

你可能想这样做:

DBtraining.Value = training.Value

将更新数据库中当前实例的Value。当你调用SubmitChanges时,它将被保存。