MongoDb UpdateOneAsync ExpressionFunction, возвращающая входную строку, была в неправильном формате - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть метод с такой подписью

Task<bool> UpdateOneAsync<TDocument, TField>(TDocument documentToModify, Expression<Func<TDocument, TField>> field, TField value)
    where TDocument : IDocument;

и с подобным методом

public virtual async Task<bool> UpdateOneAsync<TDocument, TField>(TDocument documentToModify, Expression<Func<TDocument, TField>> field, TField value)
    where TDocument : IDocument
{
    var filter = Builders<TDocument>.Filter.Eq("Id", documentToModify.Id);
    var updateRes = await HandlePartitioned(documentToModify).UpdateOneAsync(filter, Builders<TDocument>.Update.Set(field, value));
    return updateRes.ModifiedCount == 1;
}

Сценарий UpdateOneAsync такой же, как в mongo:

Task<UpdateResult> UpdateOneAsync(FilterDefinition<TDocument> filter, UpdateDefinition<TDocument> update, UpdateOptions options = null, CancellationToken cancellationToken = default);

когда я использую эту функцию из моего слоя, как показано ниже, появляется исключение

await _mongoDbRepository.UpdateOneAsync<XPartitionedDocument,float>(
                        documentToModify: isExist,
                        field: x => (float)x.TotalPrice,
                        value: td.TotalPrice
                        );

"строка ввода не была в правильном формате"

Поле TotalPrice равночисловое поле в mongodb и является (плавающей или десятичной) переменной в классе.Что означает эта ошибка и как ее использовать?

1 Ответ

0 голосов
/ 26 февраля 2019

хорошо, я сделал это, я обнаружил, что в монго у dll есть некоторые новые функции, и одна из них отсутствует в MongoDb.Driver текущей версии 2.7.3 C #. Вместе с этой dll я добавил MongoDb.Driver.Core.Подпись 2.7.2 и MongoDb.Driver.Signed 2.7.2 проблема исчезла

...