C# MongoDb驱动程序未插入整个对象

C# MongoDb驱动程序未插入整个对象,c#,.net,mongodb,C#,.net,Mongodb,在C#中将对象插入MongoDb时遇到一些问题。我的代码如下所示: _db.GetCollection<LogRecord> (collectionName).InsertOneAsync (log); \u db.GetCollection(collectionName).InsertOneAsync(log); 我尝试插入的对象如下所示: _db.GetCollection<LogRecord> (collectionName).InsertOneAsync (l

在C#中将对象插入MongoDb时遇到一些问题。我的代码如下所示:

_db.GetCollection<LogRecord> (collectionName).InsertOneAsync (log);
\u db.GetCollection(collectionName).InsertOneAsync(log);
我尝试插入的对象如下所示:

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

签入收藏时,状态对象始终丢失:

我的目标:

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;
    }
}
公共类日志记录
{
公共字典查询详细信息{get;set;}
}
公共类QueryDetailsRecord
{
公共双ElapsedTime{get;set;}
公共bool InfoFound{get;set;}
//缓存变量
public int CacheValidDays{get;set;}
公共布尔缓存已启用{get;set;}
public bool CacheUsed{get;set;}
//错误代码
公共状态记录状态{get;set;}
公共字符串例外消息{get;set;}
/// 
///建造师
/// 
公共QueryDetailsRecord(){}
/// 
///建造师
/// 
///经过的时间
///状态对象
///错误消息
公共QueryDetailsRecord(双elapsedTime、状态记录状态、字符串例外消息)
{
ElapsedTime=ElapsedTime;
状态=状态;
ExceptionMessage=例外消息;
}
}
公共类状态记录
{
私有int_代码=-1;
私有字符串_msg=null;
公共整数码
{
获取{return\u code;}
}
公共字符串消息
{
获取{return\u msg;}
}
/// 
///建造师
/// 
///状态码
///状态消息
公共状态记录(整数代码、字符串消息)
{
_代码=代码;
_味精=味精;
}
}
有人知道这里发生了什么吗


谢谢大家!

几天前我也遇到了同样的问题。 这可能是因为在“状态”字典上定义的属性“代码”和“消息”是私有的,因此方法“InsertOneAsync”无法“查看”它们


尝试将“code”和“message”定义为public,看看它是否有效。

能否显示
LogRecord
类的定义?我猜您的QueryDetailsRecord应用了一些属性,或者您配置了一些序列化程序,导致该字段被忽略。或者StatusRecord是一个结构。读取并显示所有相关代码。@SergeyBerezovskiy已更新为object=)@CodeCaster实际上没有应用任何属性。我更新了整个对象=),将进行一次摆动;是不是它不知道如何使用构造函数?并且更愿意使用属性。完美!谢谢兄弟!