Я не уверен, что вы должны найти способ обойти это.Я не могу себе представить, почему было бы неплохо изменить значение в PK.Вся природа PK заключается в том, что он является стабильным идентификатором строки.
В вашем случае вам нужно удалить и заново создать PK, чтобы он был просто полем «Id», а затем, если вам нужно улучшить производительностьпри фильтрации запросов по «имени» просто добавьте индекс в поле «имя».Тот факт, что вы используете только поле «Id», чтобы найти запись, подтверждает эту идею.
РЕДАКТИРОВАТЬ: Я ответил до того, как были комментарии к Вопросу.Теперь, когда я вижу комментарий от OP о том, что «это старая база данных, и она не может изменить ее структуру», я бы сказал, что если нет FK, указывающих на этот PK, то это должно быть довольно прямое изменение (удалите и воссоздайте PK только с полем "Id", как я упоминал выше).Если являются FK, указывающими на него, то вариант (хотя и не лучший вариант, и он может не работать на всех СУБД):
- Отбросить FK
- Удалите PK
- Создайте новый PK только в поле "Id"
- Создайте УНИКАЛЬНЫЙ ИНДЕКС для "Id" и "Name"
- Воссоздайте FK вуказать на УНИКАЛЬНЫЙ ИНДЕКС
Это будет работать на Microsoft SQL Server, и, хотя мне не нравится идея FK, указывающего на УНИКАЛЬНЫЙ ИНДЕКС, она должна учитывать ту же структуру, что и сейчас плюс LINQ просто увидит одно поле PK на «Id» и разрешит обновление.