我在try 从C#WebAPI中的MongoDb获取所有记录时遇到错误"Cannot deserialize string from BsonType ObjectId"

我的身份证是

[BsonId]
public string Id { get; set; }

改成

[BsonRepresentation(BsonType.ObjectId)] 
public string Id { get; set; }

很好用

但当我调用post方法时,它给了我不同的错误

"'d05e139c-3a48-4213-bd89-eba0c22c3c6f' is not a valid 24 digit hex string."

如何解决这个问题

我的模型是:

public class EstablishmentDetails
{

    [BsonRepresentation(BsonType.ObjectId)] 
    public string Id { get; set; }
    public string EstablishmentName { get; set; }
    public string EstablishmentType { get; set; }
    public string Address { get; set; }
    public string City { get; set; }
    public int StateID { get; set; }
    public Int32 PIN { get; set; }
    public Int64 PhoneNumber { get; set; }
    public string EmailID { get; set; }
    public bool Published { get; set; }
    public string CreatedDate { get; set; }
    public string ModifiedDate { get; set; }
}

我的存储库fro Get方法

public IEnumerable<EstablishmentDetails> GetAllEstablishmentDetails()
    {
        if (Convert.ToInt32(mCollection.Count()) > 0)
        {
            var EstablishmentDetailsCollection = mCollection.FindAllAs(typeof(EstablishmentDetails));

            if (EstablishmentDetailsCollection.Count() > 0)
            {
                foreach (EstablishmentDetails item in EstablishmentDetailsCollection)
                {
                    establishmentDetails.Add(item);
                }
            }
        }
        var results = establishmentDetails.AsQueryable();
        return results;
    }

我的Post方法存储库

public EstablishmentDetails Add(EstablishmentDetails ed)
    {
        if (string.IsNullOrEmpty(ed.Id))
        {
            ed.Id = Guid.NewGuid().ToString();
        }

        mCollection.Save(ed);
        return ed;
    }

推荐答案

而不是使用

ed.Id = Guid.NewGuid().ToString();

我曾经

ed.Id = MongoDB.Bson.ObjectId.GenerateNewId().ToString();

用于生成Id

工作正常:)

Mongodb相关问答推荐

Golang mongodb聚合错误:管道阶段规范对象必须包含一个字段

如何获取键值对的对象,其中值仅具有 mongoDB 中的投影字段

Mongoose 更新不同类型的记录

在亚马逊 EC2 上托管 nodeJS/mongoose Web 应用程序

MongoDB 支持的最 Big Data 库数

什么是 Mongoose (Nodejs) 复数规则?

使用 MongoDB 进行分页

在 Ubuntu 14.04 中安装 MongoDB 失败

mongodb-nodejs-driver,DeprecationWarning:collection.count 已弃用

从 LinkedHashMap 转换为 Json 字符串

MongoDB - 投影一个并不总是存在的字段

使用 MongoDB Java 驱动程序将 DBObject 转换为 POJO

使用已排序的数据获取不同的值

具有 AWS 云形成和自动zoom 的 Mongodb 集群

错误:Could not connect to any servers in your MongoDB Atlas cluster

如何在 MongoDB 的 $match 中使用聚合运算符(例如 $year 或 $dayOfMonth)?

在mongoose中查询虚拟属性

MongoDB:聚合框架: $match between fields

是否可以在 Mongodb 中的两个数据库之间进行 $lookup 聚合?

我可以使用字符串作为 mongodb 文档的 ID 类型吗?