Получить идентификатор из недавно вставленного объекта - PullRequest
1 голос
/ 07 марта 2019

Я использую EF Core со своим собственным модулем работы и общим шаблоном хранилища. У меня есть свойство shadow, связывающее сущности, которые не имеют прямой связи с БД. Поэтому я выполняю добавление UOW к двум таблицам, используя свойство shadow для получения идентификатора из первой вставки и помещая его в качестве внешнего ключа во вторую без ограничений. Это все работает отлично, и вновь вставленные записи в обеих таблицах соответствуют. Итак, первичный ключ первой таблицы успешно помещен во вторую, поэтому у меня есть теневые отношения.

Что я не могу сделать, так это получить доступ к этому новому полю идентификатора в коде C #, чтобы я мог затем вернуть его клиенту.

Как то так ..

      int entity1ID = _unitOfWork.entity1Repository.AddEntity1(entity1);
      //The value in entity1ID is -2147482647. This is used to map the shadow property.
      int entity2ID = _unitOfWork.entity2Repository.AddEntity2(entity2);
      int resultCount = await _unitOfWork.SaveChangesAsync();

После завершения этого процесса все работает. Я не могу заполучить поле entity1ID, если я проверю его, то оно все равно будет иметь значение -2147482647. Кто-нибудь знает достойное решение этой проблемы.

1 Ответ

0 голосов
/ 07 марта 2019

Как только ваш SaveChangesAsync() сделан, вы можете получить значение свойства shadow следующим образом:

var entity1ID = dbContext.Entry(entity1).Property("ID").CurrentValue; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...