使用Mongodb时查询结果问题报错问题

.Net技术 码拜 8年前 (2016-09-16) 1889次浏览
讨教各位,本人用官方的1.11的驱动,查询时collection.FindAllAs<T>()方法返回MongoCursor这个对象结果该怎么还原为实体对象呢?
本人的实体对象中的CurrentObj包含了另一个实体对象,bson结构如下:

/* 1 */
{
    "_id" : ObjectId("57abebbe1f28d84e43ede3f9"),
    "_t" : "AModel",
    "AAId" : 11111,
    "CurrentObj" : {
        "_t" : "BModel",
        "BBId" : 88888
    },
    "MinTime" : Date(-62135596800000),
    "MaxTime" : Date(-62135596800000)
}

本人的代码:

public static List<T> GetAll<T>(AModel model)// 传进来的T也是AModel
        {
            if (model == null || Utils.StrIsNullOrEmpty(model.CollectionName))
            {
                return null;
            }
            InitMongoDB(model.CollectionName);
            MongoCursor<T> result = mDBProvider.GetAll<T>();// 这里已查询出结果
            List<T> resultList = mDBProvider.CursorToList<T>(result);// 调用下面的遍历方法
            return resultList;
        }

        public List<T> CursorToList<T>(MongoCursor<T> cursor)
        {
            List<T> resultList = new List<T>();
            cursor.GetEnumerator().MoveNext();// 这里报错
            if(cursor.Count() > 0)
            {
                foreach (var obj in cursor)// 遍历
                {
                    resultList.Add(obj);
                }
            }
            return resultList;
        }

运行到MoveNext()时的报错详情:
An error occurred while deserializing the CurrentObj property of class AModel: Unknown discriminator value “BModel”.
应该时CurrentObj里面的BModel对象没有正确反序列化,讨教该怎么处理?
AModel实体的定义:

public class AModel
{
	public int AAId {get; set; }
	public Object CurrentObj { get; set; }
}

先感谢诸位~

解决方案

10

BModel呐?

30


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明使用Mongodb时查询结果问题报错问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)