2014-10-23 2 views
0

Я пытаюсь изменить поле в моей строке с использованием EF 6.1 и я получаю следующее сообщение об ошибке:«Свойство„Modified“является частью ключевой информации объекта и не может быть изменено

The property 'Modified' is part of the object's key information and cannot be modified.

Однако модифицированные не первичный ключ, ни часть любого соединения ПК.

однако это часть моих условий поиска.

var item = _src.Items.Where(x => x.Modified).OrderBy(x => x.DateModified).FirstOrDefault(); 
... 
MarkItemAsSynced(item) 


    private void MarkItemAsSynced(Item item) 
    { 
     item.Modified = false;  
     _src.SaveChanges();  <<<< ERROR THORWN 
    } 

Что может быть причиной этой проблемы?

Чтобы снова подтвердить, элемент «Модифицированный» НЕ является ПК.

Таблица имеет определенный PK.

Модель Класс:

public partial class Item 
    { 
     public int Id { get; set; } 
     ... 
     public bool Modified { get; set; }    
    } 
} 
+1

Можете ли вы показать класс «Предмет»? Или, может быть, вы настраиваете что-нибудь лишнее в бегстве? – DavidG

+0

Он может отображаться как ключ, если модель была создана из базы данных. Если в таблице нет первичного ключа, генератор попытается выбрать поля, которые должны использоваться в качестве ключа. –

+0

Может быть, это помогает? http://stackoverflow.com/questions/3187963/the-property-id-is-part-of-the-objects-key-information-and-cannot-be-modified – Dom84

ответ

0

Это, казалось, поврежден или неправильно отображается модель данных.

Я установил ее, выполнив следующие действия:

  1. Удаляется таблицы в модели EDMX-.
  2. Затем я снова добавил столы назад.
  3. Сохраненный Типовом

После этого она работала правильно.

Мои предположения состоят в том, что EF каким-то образом неправильно отображал измененное поле в OK в базе данных.