Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在.Net中验证Mongo对象ID_C#_Mongodb_Asp.net Core_.net Core - Fatal编程技术网

C# 如何在.Net中验证Mongo对象ID

C# 如何在.Net中验证Mongo对象ID,c#,mongodb,asp.net-core,.net-core,C#,Mongodb,Asp.net Core,.net Core,我遇到这样一种情况:一个方法需要接受一个ID,在Mongo中查找一个值,如果找不到,则调用另一个API来获取该项,前提是该项在本地数据库中不存在 我遇到的问题是集合的MongoID配置为ObjectID。当我试图查找无效id时,它抛出此异常:“不是有效的24位十六进制字符串”。其他API期望的ID的格式不同。在我寻找Mongo之前,有没有办法检查该id的有效性 我知道我可以将Mongo中的id更改为字符串,但为了与其他系列保持一致,我不希望这样做 集合的注册方式如下: BsonC

我遇到这样一种情况:一个方法需要接受一个ID,在Mongo中查找一个值,如果找不到,则调用另一个API来获取该项,前提是该项在本地数据库中不存在

我遇到的问题是集合的MongoID配置为ObjectID。当我试图查找无效id时,它抛出此异常:“不是有效的24位十六进制字符串”。其他API期望的ID的格式不同。在我寻找Mongo之前,有没有办法检查该id的有效性

我知道我可以将Mongo中的id更改为字符串,但为了与其他系列保持一致,我不希望这样做

集合的注册方式如下:

        BsonClassMap.RegisterClassMap<Foo>(cm =>
        {
            cm.AutoMap();
            cm.MapIdMember(f => f.id)
            .SetIdGenerator(StringObjectIdGenerator.Instance)
            .SetSerializer(new StringSerializer(BsonType.ObjectId))
            .SetIgnoreIfDefault(true);
        });

我想我会添加一个答案,尽管在评论中已经讨论过了

你可以使用这个方法

var invalidObjId=“abc”;
if(目标类锥虫(无效类锥虫)
{
//我永远不会进入这里。
}
var validObjId=“5ebd7246d2b0d6003887a8f4”;
if(目标色氨酸(有效色氨酸)
{
//我们会到的。
}

您是否尝试过
ObjectId.TryParse
?如果字符串可以是ObjectId,并且解析后的ObjectId作为out参数,则返回true。@ScottyD0nt谢谢,我错误地查看了这里,并认为该方法已被弃用。看起来它在这里仍然可用:解决了问题。谢谢
await collection.FindAsync(foo => foo.id == id);