ef core - обновить составной первичный ключ - PullRequest
1 голос
/ 10 января 2020

У меня есть несколько таблиц с составным ключом {Id + OrgId}. Идентификатор предоставляется пользователем приложения, OrgId обрабатывается системой. Я хотел бы установить OrgId для всех экземпляров этих таблиц, без необходимости go для каждого репо, а затем установить OrgId вручную перед подключением.

Как я могу это сделать?

В случае где OrgId не является частью первичного ключа, я переопределил SaveChanges (), чтобы обновить все отслеживаемые объекты, имеющие OrgId, перед вызовом базовой реализации. Этот подход не работает, когда OrgId является частью первичного ключа, потому что мы не можем обновить первичный ключ объекта после его отслеживания.

1 Ответ

1 голос
/ 11 января 2020

Так что внутри переопределения SaveChanges() я устанавливаю entry.Entity.OrgId, entry.OriginalValues["OrgId"] и entry.CurrentValues["OrgId"] с тем же значением. Я больше не получаю исключения. Кроме того, на этом этапе я обязательно пометил OrgId как .ValueGeneratedNever().

Хотя я бы порекомендовал взглянуть на решение @ IvanStoev.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...