C# 中的 Couchbase 查询在使用固定类型 class 调用时给出空对象

Couchbase Query in C# gives empty objects when called with fixed type class

Couchbase 服务器 4.0 OS: Windows 7 客户端SDK:CouchbaseNetClient.2.2.5 Visual Studio 2013 年,C# 4.5

var query_res1 = m_bucket.Query<MyClass>("select * from MyData limit 10");
var query_res2 = m_bucket.Query<dynamic>("select * from MyData limit 10");

query_res1 给了我一个类型化数据的列表,但是对象是空的(元素是默认的(T))(所以是用新创建的,但不是反序列化的)

query_res2 有效 "correct":动态对象列表包含存储桶中的数据。

数据class:

[Serializable]
public class MyClass
{
    [JsonProperty("dateTime")]
    public DateTime DateTime { get; set; }

    [JsonProperty("value")]
    public double Value { get; set; }

}

感谢任何想法。

query_res1 给了我一个类型数据列表,但是对象是空的(元素是默认的(T))(所以用新创建的,但不是反序列化的)

你有两种情况

1。 ==> 我认为该对象是空的,因为您在 "MyClass" 中创建的这个字段与查询中的数据不同,例如

DateTime # 白天 值#值[=1​​0=]

查询和属性中的数据应该相同吗?

  1. 我认为您不应该创建与 dataType 相同的字段名称

    [JsonProperty("dateTime")] public 日期时间日期时间 { get;放; }

将查询更改为:

"select MyData.* from MyData limit 10"

原因是SDK希望查询结果以文档值数组的形式返回,但是它从n1ql查询服务中得到的是一个文档值数组,包裹在另一个对象中作为属性 在存储桶名称下。选择 MyData.* 会直接删除额外的对象包装器和 returns 文档值。