首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SubmitChanges不更新

SubmitChanges不更新
EN

Stack Overflow用户
提问于 2014-03-23 16:07:33
回答 1查看 1.3K关注 0票数 0

首先,我想确切地说,我阅读了有关SubmitChanges问题的所有相关科目,但没有找到任何解决我的问题的方法。我有几个使用相同方式(除了复合主键)工作得非常好的表,但是这个表没有,我只是不明白为什么。这张桌子:

代码语言:javascript
复制
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)
);

相关班级:

代码语言:javascript
复制
[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;
    }
}

和数据库更新调用:

代码语言:javascript
复制
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异常造成的。下面是异常跟踪:

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2014-03-23 16:31:11

你没有做任何改变。这一行代码将只为您的局部变量DBtraining分配一个新值:

代码语言:javascript
复制
DBtraining = training;

你可能想做的是:

代码语言:javascript
复制
DBtraining.Value = training.Value

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22593375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档