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