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 # 白天
值#值[=10=]
查询和属性中的数据应该相同吗?
我认为您不应该创建与 dataType 相同的字段名称
[JsonProperty("dateTime")]
public 日期时间日期时间 { get;放; }
将查询更改为:
"select MyData.* from MyData limit 10"
原因是SDK希望查询结果以文档值数组的形式返回,但是它从n1ql查询服务中得到的是一个文档值数组,包裹在另一个对象中作为属性 在存储桶名称下。选择 MyData.* 会直接删除额外的对象包装器和 returns 文档值。
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 # 白天 值#值[=10=]
查询和属性中的数据应该相同吗?
我认为您不应该创建与 dataType 相同的字段名称
[JsonProperty("dateTime")] public 日期时间日期时间 { get;放; }
将查询更改为:
"select MyData.* from MyData limit 10"
原因是SDK希望查询结果以文档值数组的形式返回,但是它从n1ql查询服务中得到的是一个文档值数组,包裹在另一个对象中作为属性 在存储桶名称下。选择 MyData.* 会直接删除额外的对象包装器和 returns 文档值。