Я использую Entity Framework (V5, я думаю), и в настоящее время я пытаюсь добавить новую строку в таблицу. Таблица, которую я хочу добавить, содержит составной первичный ключ на основе значения «PRN» (в основном уникальный идентификатор клиента) и связанного с ним порядкового номера. Каждый раз, когда информация в этой таблице обновляется, мы вставляем новую строку для PRN и увеличиваем порядковый номер. Номер последовательности не определяется как автоматическое инкрементное значение или IDENTITY в базе данных, так как он не уникален - порядковый номер уникален только для PRN.Добавить объект, который содержит составной первичный ключ
Когда я выполняю следующий код, я получаю InvalidOperationException: «Свойство« DDIPhasedPayment_Seq_Num »является частью ключевой информации объекта и не может быть изменено».
EF, похоже, не изменяет, если я модифицирую только часть PRN первичного ключа и сохраняю запись (что приводит к значению нуля по умолчанию для Seq_Num), но генерирует исключение, когда я пытаюсь изменить другое часть ПК. Как я могу создать и добавить строку в эту таблицу, не нарушая EF?
var nextSequence = GetNextPhasedPaymentSequenceNumber(message.Prn);
var entity = new Practitioner_DDI_PhasedPayment()
{
PRN = message.Prn,
DDIPhasedPayment_Seq_Num = nextSequence,
TSN = message.Tsn,
//........
//Various other fields populated
//........
};
dbContext.Practitioner_DDI_PhasedPayment.Add(entity);
dbContext.SaveChanges();
Вы уверены, что не изменяете значение PK в 'GetNextPhasedPaymentSequenceNumber'? –