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

时间:2016-02-25 15:57:57

标签: c# .net couchbase

Couchbase Server 4.0 操作系统: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))(所以用new创建,但不是反序列化的)

query_res2工作“正确”:动态对象列表包含来自存储桶的数据。

数据类:

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

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

}

感谢任何想法。

2 个答案:

答案 0 :(得分:0)

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

你有两种情况

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

DateTime #daytime 价值#值

来自查询和属性的数据是否应该相同?

  1. 我认为您不应该创建与dataType

    相同的字段名称

    [JsonProperty(&#34;日期时间&#34)] public DateTime DateTime {get;组; }

答案 1 :(得分:0)

将查询更改为:

"select MyData.* from MyData limit 10"

原因是SDK期望查询结果作为文档值的数组返回,但它从n1ql查询服务获得的是包含在另一个对象中的文档值数组作为存储桶名称下的属性。选择MyData。*将删除额外的对象包装并直接返回文档值。