2013-04-06 5 views
0
public bool UpdateValues(String impR, String actR, String proR, String impV, String magV) 
{ 
     bool IsInserted = false; 

     try 
     { 
      MatrixValues c = cecbContext.MatrixValues.First(i => i.actv_reference == actR); // primary key 
      c = cecbContext.MatrixValues.First(i => i.impt_reference == impR); // primary key 
      c = cecbContext.MatrixValues.First(i => i.proj_reference == proR); // primary key 

      c.mtrxV_importance = double.Parse(impV); // updated value 
      c.mtrxV_magnitude = double.Parse(magV); // updated value 

      cecbContext.SaveChanges(); // getting an error here!!! 

      IsInserted = true; 
     } 
     catch (Exception) 
     { 
      IsInserted = false; 
     } 

     return IsInserted; 
    } 

Я получаю сообщение об ошибке при попытке обновить данныеEntity Framework оператор обновления вызывает ошибку

Ошибка является

Нарушение ограничения первичного ключа «PK_MatrixValues». Невозможно вставить дубликат ключа в объект 'dbo.MatrixValues'.

ответ

1

Вы устанавливаете объект c несколько раз; если последнее утверждение достаточно; то не используйте предыдущие; если вы хотите выбрать объект c, используя несколько критериев, вам необходимо изменить следующие строки;

MatrixValues c = cecbContext.MatrixValues.First(i => i.actv_reference == actR); // primary key 
    c = cecbContext.MatrixValues.First(i => i.impt_reference == impR); // primary key 
    c = cecbContext.MatrixValues.First(i => i.proj_reference == proR); // primary key 

к:

MatrixValues c = cecbContext.MatrixValues.First(i => i.actv_reference == actR && c.impt_reference == impR && c.proj_reference == proR); 
0

Нарушение ограничения первичного ключа 'PK_MatrixValues'. Невозможно вставить дублирующий ключ в объект 'dbo.MatrixValues'

Это означает, что поле содержит первичный ключ. Он не позволит дублировать записи

+1

Можете ли вы сказать мне, как обновить значения, я не хочу, чтобы обновить первичные ключи, я хочу, чтобы обновить только два значения поля – Gayashan

Смежные вопросы