0

我有一个不寻常的设置,我从 PHP 站点将数据插入 MongoDB。然后由 .NET 读取数据并作为 API 提供。

插入记录(通过 PHP)后,.NET API 在尝试读取数据时会引发以下错误。

An error occurred while deserializing the Id property of class Project.ModelClass: Cannot deserialize Guid from BsonType ObjectId.

执行插入的代码是:

    $item = Item::create(array(
        // fields
    ));

被读入的模型类有一个像这样的 Id 字段:

        public Guid Id { get; set; }

API 将正确地提供从另一个数据源导入的同一集合中的其他项目。

我是否需要在 PHP 插入中做一些特殊的事情以允许将 Id 读取并反序列化到 .NET 模型类中?

任何帮助将不胜感激!

斯图尔特

4

2 回答 2

1

尝试在 C#中替换GuidObjectId

public ObjectId Id { get; set; }

您的Id字段存储为ObjectId类型。并且 C# 驱动程序无法将ObjectId类型反序列化为Guid

于 2013-08-19T10:08:32.903 回答
1

从您的评论看来,您想使用 aGUID作为_id文档的,但您还没有向我们展示 PHP 代码实际插入了哪些字段。

假设是这种情况,您的 PHP 代码将需要显式插入_idGUID否则 PHP 驱动程序会自动将该_id字段设置为 generated ObjectId

$collection->insert(array(
    "_id" => new MongoBinData($guid, 3)
));

应该将 设置_id为 aGUID而不是 default ObjectId

于 2013-08-26T07:35:22.260 回答