Невозможно добавить личность, которая уже существует - PullRequest
1 голос
/ 24 августа 2011

Я использую C # 4.0 в простом приложении для записи расходов.Я пытаюсь сохранить в таблицу с автоматически увеличенным полем идентификатора, установленным в качестве первичного ключа.Он работает нормально при первом использовании, но во второй и последующий раз я получаю сообщение об ошибке «Не удается добавить идентификацию, которая уже существует».

Вот код, с которым у меня возникают проблемы

public bool SaveClaim(Claim newClaim, bool blNew)
{
    bool blSuccess = true;
    try
    {
        expContext.Claims.InsertOnSubmit(newClaim);
        expContext.SubmitChanges();
        claim = null;
    }
    catch (Exception e)
    {
        blSuccess = false;
        MessageBox.Show(e.ToString());
    }
    return blSuccess;
}

Я работал над этим все утро, и это сводит меня с ума.Буду рад любой помощи.

Ответы [ 3 ]

1 голос
/ 24 августа 2011

Убедитесь, что в вашем dbml установлены следующие свойства для столбца идентификации заявки:

Автоматически сгенерированное значение = true

Автосинхронизация = OnInsert

Также убедитесьчто ваш новый объект Claim на самом деле является новым объектом, а не повторным использованием того, который вы добавили ранее.

1 голос
/ 24 августа 2011

Может быть, вы должны попробовать обновить ваш дизайнер. Удалите таблицу Claim, обновите проводник сервера и добавьте его снова.

По крайней мере, так я делаю, когда получаю эту ошибку. Обычно это показывает, когда я устанавливаю столбец идентификаторов в базе данных после компиляции.

1 голос
/ 24 августа 2011

Возможно, вы пытаетесь ОБНОВИТЬ newClaim, используя метод INSERT .

Если newClaim имеет идентификатор и метод expContext.Claims.InsertOnSubmit(newClaim) пытается вставить запись с этим идентификатором.Это может быть проблемой.

if (blNew)
    expContext.Claims.InsertOnSubmit(newClaim);
else
    expContext.Claims.UpdateOnSubmit(newClaim); //-- Assumed method

Дополнительно

Вот полезная тема: Форумы MSDN

if (blNew)
{
        expContext.Claims.InsertOnSubmit(newClaim);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...