Linq to SQL在引用FK时复制条目

时间:2010-12-27 23:47:50

标签: silverlight linq-to-sql

使用LINQ-to-SQL时,我仍然遇到一些问题。 我也在寻找自己的答案,但是这个问题很难解决,我找不到合适的关键字来查找它。

我这里有这个代码:

public CustomTask SaveTask(string token, CustomTask task)
    {
        TrackingDataContext dataConext = new TrackingDataContext();

        //Check the token for security
        if (SessionTokenBase.Instance.ExistsToken(Convert.ToInt32(token)) == null) return null;

        //Populates the Task - the "real" Linq to SQL object            
        Task t = new Task();
        t.Title = task.Title;
        t.Description = task.Description;

//****The next 4 lines are important****
        if (task.Severity != null)
            t.Severity = task.Severity;
        else
            t.SeverityID = task.SeverityID;

        t.StateID = task.StateID;

        if (task.TeamMember != null)
            t.TeamMember = task.TeamMember;
        else
            t.ReporterID = task.ReporterID;

        if (task.ReporterTeam != null)
            t.Team = task.ReporterTeam;
        else
            t.ReporterTeamID = task.ReporterTeamID;

        //Saves/Updates the task
        dataConext.Tasks.InsertOnSubmit(t);
        dataConext.SubmitChanges();

        task.ID = t.ID;

        return task;
    }

问题在于我发送严重性,然后,当我遇到这种情况时:

调用方法之前

DB State:

ID名称 1高 2中等 3低

调用方法选择“medium”作为严重性

调用方法后的DB State: ID名称 1高 2中等 3低 4中等

重点是: - 为什么要复制这个条目?

关于代码的一些解释: CustomTask与Task几乎相同,但我遇到了序列化问题,可以看出here

编辑:刚发现代码正在发送Severity对象而不是ID,我将更改它。但它复制条目仍然很奇怪:(

Edit2:由于新信息而更新了问题

1 个答案:

答案 0 :(得分:0)

问题是服务是Rest,因此每次调用都会创建一个新的DataContext,从而生成重复的条目。 使用ID可以避免此问题。