Дублирующая запись Linq to SQL при обращении к FK - PullRequest
0 голосов
/ 28 декабря 2010

Я все еще сталкиваюсь с некоторыми проблемами при использовании 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;
    }

Проблема в том, что я отправляю серьезность, а затем, когда у меня возникает такая ситуация:

Состояние БД перед вызовом метода:

ИД 1 высокий 2 средних 3 низких

Вызовите метод, выбрав «средний» уровень серьезности

Состояние БД после вызова метода: Имя ID 1 высокий 2 средних 3 низкий 4 средних

Дело в том, что: -Почему это дублирует эту запись?

Некоторые пояснения к коду: CustomTask - почти то же самое, что и Task, но у меня были проблемы с сериализацией, которые можно увидеть здесь

Edit: только что узнал, что код отправляет объект Severity, а не ID, я собираюсь изменить его. Но все же очень странно, что он дублирует запись: (

Edit2: обновлен вопрос из-за новой информации

1 Ответ

0 голосов
/ 28 декабря 2010

Проблема заключалась в том, что службы являются Rest, поэтому при каждом вызове создается новый DataContext, генерирующий дублированную запись.Использование идентификатора позволяет избежать этой проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...