Моля, включете:
- Определението на обект
- Класът/конфигурацията на съпоставяне от контекста
- Дефиницията на SQL таблицата
BackPropagateServerGen
Гледайки проследяването на стека, ключовото нещо, което виждам, е BackPropagateServerGen
.
Entity Framework изпълнява вашата актуализация спрямо базата данни, но една от стойностите на вашия съставен ключ (вероятно COPY_ID) всъщност се променя от извикването UPDATE. Тази генерирана от сървъра стойност се връща от SQL извикването и Entity Framework след това се оплаква, че стойността на ключа се променя изпод нея.
И така, бих предположил, че стойността на вашия съставен ключ COPY_ID е дефинирана като идентификатор, генериран от сървъра, но се случва едно или и двете:
- Съпоставяте към изглед или съхранена процедура, която пречи на това, което Entity Framework би очаквало от актуална АКТУАЛИЗАЦИЯ
- Имате един или повече тригери в таблицата, изгледа или съхранената процедура, които пречат на резултата.
Ако имате някакви тригери, деактивирайте ги временно, за да видите дали проблемът ще спре.
Ако картографирате към изглед или съхранена процедура, опитайте да картографирате директно към таблицата, ако е възможно.
Използвайте всички инструменти за профилиране, които имате, за да уловите какъв SQL се изпълнява от кода.
Резюме
Мисля, че извикването UPDATE всъщност достига до базата данни, но резултатът от връщането променя ключовата(ите) стойност(и), което води до неуспех на Entity Framework и вероятно връща обратно транзакцията UPDATE (в зависимост от версията на EF, която използвате).