Я могу получить все документы в коллекции по параметру, но не по одному документу с помощью Id C # Driver 2.x - PullRequest
0 голосов
/ 17 января 2019

У меня есть абстрактный класс "Компания". «Клиент» и «Агентство» наследуются от этого класса. Оба хранятся в коллекции "Компании". У меня есть поле дифференциатора с именем "companyType". С C # API 2 и MongoDb C # драйвер 2: Я могу получить все документы «Клиента» и все документы «Агентства». Я могу получить любой «Клиент» по _id. Я не могу получить ни одного «Агентства» по _id. Я не могу получить этот документ с помощью Почтальона и не получаю никакого возврата, но я могу получить эту запись в 3T. Отладка в моем API просто останавливается в ожидании ... Найти. У меня похожая ситуация с другой коллекцией, где все документы относятся к одному классу: возвращает все документы, но не один по идентификатору. Однако в этом случае Postman отображает ошибку сериализации. Почему за 1, но не за всех?

В приведенном выше примере я могу успешно установить «Агентство» (я вижу его в БД), но, используя FindOneAndReplaceOptions для isUpsert: true и ReturnDocument: After, ничего не возвращается.

Отдельная запись публичная асинхронная задача GetAgencyByIdAsync (идентификатор строки) { пытаться { return await dbContext.Agency.Find (x => x.Id == id) .FirstOrDefaultAsync (); } поймать (исключение ex) { бросить экс; } }

Вставка, которая успешно выполняется в Db, но не возвращает (аналогично извлечению одиночного) общественная асинхронная задача SaveAgencyAsync (элемент агентства) { пытаться { if (item.Id == null) { item.Id = ObjectId.GenerateNewId (). ToString (); } Агентство агентство = новое агентство (); agency = await dbContext.Agency.FindOneAndReplaceAsync (x => x.Id == item.Id, item, новый FindOneAndReplaceOptions { IsUpsert = true, ReturnDocument = ReturnDocument.After } ); агентство по возврату; } поймать (исключение ex) { бросить экс; } }

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