【问题标题】:Cant deserialize inherited object with Mongo c# driver无法使用 Mongo c# 驱动程序反序列化继承的对象
【发布时间】:2016-12-16 16:33:21
【问题描述】:

我正在使用AspNetCore.Identity.MongoDB nuget package 将一些 Asp.Net Identity 功能导入my project

然后我想扩展存在于我最初为我的项目创建的用户类型的MongoIdentityUser,因此我尝试从该类继承并创建以MongoIdentityUser 作为其基类的my User Class

如果我尝试查询我的集合,其中存储了一个 MongoIdentityUser 并尝试将其反序列化为 MongoIdentityUser,我会得到那个项目,所以成功。

但是,如果我尝试将其反序列化为 My User,这只是 MongoDBUser 的继承类,我会收到以下异常:

不可能扩展我想要的课程吗?而且这个异常也没什么用,不知道为什么它不给我一个更详细的异常

json 对象是这样的

{
    "_id": "dat@email.com",
    "userName": "dat@email.com",
    "normalizedUserName": "dat@email.com",
    "email": {
        "value": "dat@email.com",
        "confirmationRecord": null,
        "normalizedValue": "dat@email.com"
    },
    "phoneNumber": null,
    "passwordHash": "xxx",
    "securityStamp": "87242bb7-2a09-4905-ba61",
    "isTwoFactorEnabled": false,
    "claims": [],
    "logins": [],
    "accessFailedCount": 0,
    "isLockoutEnabled": true,
    "lockoutEndDate": null,
    "createdOn": {
        "instant": {
            "$date": "2016-11-13T17:05:59.487Z"
        }
    },
    "deletedOn": null
}

【问题讨论】:

  • 恕我直言,您忘记使用BsonClassMap.LookupClassMap(typeof(User)) ;) 之类的方式注册派生类。
  • @shA.t 但不会只给我 MongoIdentityUser 属性或 Users 属性而不是两个类属性吗?
  • 这不是关于属性,而是关于 MongoDB 可以基于它们序列化的类 this for more ;)。
  • 没有帮助,通常我也会得到一个映射错误,但是驱动程序中的这个空引用异常似乎是错误的
  • 异常表示反序列化的结果为空,你不能为空对象调用.ToList()方法,Bson序列化器需要知道你所有的类;)。

标签: c# mongodb asp.net-core mongodb-.net-driver


【解决方案1】:
猜你喜欢
  • 2011-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多