Я использую Entity Framework 4.3.1, и я пытаюсь вставить новую запись в таблицу, на которой основан объект ProductVersion
.Вставка строки Entity Framework с составным ключом
Объект ProductVersion
имеет 2 свойства, которые составляют составной первичный ключ для таблицы с именем ProductId
и ProductOrdinal
.
Всякий раз, когда кто-то обновляет запись продукта, я создаю и передаю объект ProductVersion
обратно в мой репозиторий, увеличивая свойство ProductOrdinal
и пытаясь добавить объект в контекст и сохранить его.
я получаю следующее сообщение об ошибке:
The property 'ProductOrdinal' is part of the object's key information and cannot be modified.
Ни один из столбцов, составляющих ключ являются автонумерация и я аннотированный свойства в моем POCO со следующим:
[Key, Column("PROD_Ordinal", Order=2), DatabaseGenerated(DatabaseGeneratedOption.None)]
public long ProductOrdinal { get; set; }
Из-за исключения и вашего описания кажется, что вы увеличиваете свойство ProductOrdinal на существующем экземпляре ProductVersion и пытаетесь его сохранить. Что вы, вероятно, захотите сделать, это создать новый экземпляр «ProductVersion» из существующего экземпляра и увеличить свойство «ProductOrdinal» и сохранить новый экземпляр. – alwayslearning
Я проверю это. Я думаю, вы можете быть правы. – Maxmanzero
Вы были абсолютно правы. Контекст был все еще открытым, поэтому, когда я обновлял «текущий» объект и делал свое сравнение, насколько я понял, я обновил один и тот же объект, и он жаловался, что я пытался обновить ключ, который уже был вставлен. – Maxmanzero