gpt4 book ai didi

c# - MongoDB C# Driver Find not throwing System.FormatException Deserialization error 并且运行成功

转载 作者:行者123 更新时间:2023-12-05 07:25:27 25 4
gpt4 key购买 nike

我在我的 .net core 2.0 应用程序中使用最新的 c# mongo 驱动程序。我的代码中有这个错误

无法从 BsonType“Int64”反序列化“String”。

但是 mongo 查询没有抛出任何异常。这是我存储库中的查找方法。

        /// <summary>
/// find entities
/// </summary>
/// <param name="filter">expression filter</param>
/// <returns>collection of entity</returns>
public virtual IEnumerable<T> Find(Expression<Func<T, bool>> filter)
{
return Collection.Find(filter).ToEnumerable();
}

/// <summary>
/// find entities
/// </summary>
/// <param name="filter">expression filter</param>
/// <returns>collection of entity</returns>
public Task<IEnumerable<T>> FindAsync(Expression<Func<T, bool>> filter)
{
return Task.Run(() => Find(filter));
}

这是处理程序代码

public async Task<object> Handle(GetQuestionBySurveyIdAndCodeQuery request, CancellationToken cancellationToken)
{
var result = await _context.Question.FindAsync(x => x.SurveyId.Equals(request.SurveyId));
return result;
}

代码运行成功,但从该查询返回的数据中显示错误。

enter image description here

enter image description here

我想抛出这个异常,以便我的框架可以处理它。他们的任何设置是否与此相关。

需要帮助。

谢谢

最佳答案

要从 MongoDB 驱动程序中获取 FormatException,您需要从数据库中获取数据,而在您的代码中您只是构建一个查询。您正在使用的扩展方法 .ToEnumerable() 没有访问数据库,因此此时您不会获得任何结果。文档 says它:

Wraps a cursor in an IEnumerable that can be enumerated one time.

因此,要枚举游标,您可以在其上运行 foreachToList。否则它只是一个没有任何结果的数据库查询。要解决此问题,您可以更改 Find 方法主体:

public virtual IEnumerable<T> Find(Expression<Func<T, bool>> filter)
{
return Collection.Find(filter).ToList();
}

关于c# - MongoDB C# Driver Find not throwing System.FormatException Deserialization error 并且运行成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54793844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com