MongoDb驱动程序没有插入整个对象

时间:2017-11-09 13:23:33

标签: c# .net mongodb

我在C#中将对象插入MongoDb时遇到了一些麻烦。我的代码是这样的:

_db.GetCollection<LogRecord> (collectionName).InsertOneAsync (log);

我想插入的对象就像这样:

enter image description here

当我签入我的收藏夹时,状态对象总是丢失:

My mongoDb object

我的对象:

public class LogRecord
{
    public Dictionary<string, QueryDetailsRecord>   QueryDetails         { get; set; }
}

public class QueryDetailsRecord
{
    public double       ElapsedTime      { get; set; }
    public bool         InfoFound        { get; set; }

    // Cache vars
    public int          CacheValidDays   { get; set; }
    public bool         CacheEnabled     { get; set; }
    public bool         CacheUsed        { get; set; }

    // Errors codes        
    public StatusRecord Status           { get; set; }
    public string       ExceptionMessage { get; set; }

    /// <summary>
    /// Constructor
    /// </summary>
    public QueryDetailsRecord() {}

    /// <summary>
    /// Constructor
    /// </summary>
    /// <param name="elapsedTime">Elapsed time</param>
    /// <param name="status">Status object</param>        
    /// <param name="exceptionMessage">Error message</param>
    public QueryDetailsRecord (double elapsedTime, StatusRecord status, string exceptionMessage)
    {
        ElapsedTime      = elapsedTime;
        Status           = status;            
        ExceptionMessage = exceptionMessage;
    }
}

public class StatusRecord
{
    private int    _code = -1;
    private string _msg  = null;

    public int Code
    {
        get { return _code; }
    }

    public string Message
    {
        get { return _msg; }
    }

    /// <summary>
    /// Constructor
    /// </summary>
    /// <param name="code">Status code</param>
    /// <param name="msg">Status message</param>
    public StatusRecord (int code, string msg)
    {
        _code = code;
        _msg  = msg;
    }
}

有没有人知道这里有什么问题?

谢谢!

1 个答案:

答案 0 :(得分:2)

几天前我也有同样的问题。 也许它正在发生,因为属性&#34; 代码&#34;和&#34; 消息&#34;在您的&#34; 状态&#34;字典是私有的,这种方法&#34; InsertOneAsync&#34;不能&#34;看&#34;它们。

尝试定义&#34; 代码&#34;和&#34; 消息&#34;作为公开,看看它是否有效。