首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在QueryExpression中创建带空字段的PocoDynamo

如何在QueryExpression中创建带空字段的PocoDynamo
EN

Stack Overflow用户
提问于 2016-06-29 21:13:39
回答 2查看 195关注 0票数 1

当范围键为null时,我希望查询GSI。我有这段代码,但它引发了一个异常

代码语言:javascript
运行
复制
IPocoDynamo dbDynamo = new PocoDynamo(new AmazonDynamoDBClient());
var queryExpression = dbDynamo.FromQueryIndex<IndexName>(x => x.InvalidFrom == (DateTime?)null);
var response = dbDynamo.Query(queryExpression);

我的模特长得像这样

代码语言:javascript
运行
复制
[References(typeof(IndexName))]
[Alias("TableName")]
public class Child
{
   [AutoIncrement]
   public int ChildId { get; set; }

   public int ParentId { get; set; }
   public string Key { get; set; }
   public DateTime? InvalidFrom { get; set; }
   public decimal Value { get; set; }
}

这是我的索引

代码语言:javascript
运行
复制
public class IndexName: IGlobalIndex<Child>
{
   [HashKey]
   public int ParentId { get; set; }

   [RangeKey]
   public DateTime? InvalidFrom { get; set; }

   public int ChildId { get; set; }
}

我做错什么了?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-30 03:22:12

首先,在使用查询时,始终需要在查询中提供哈希,因此它需要的最小值为:

代码语言:javascript
运行
复制
var q = dbDynamo.FromQueryIndex<IndexName>(x => 
    x.ParentId = parentId && x.InvalidFrom == (DateTime?)null);

但是尝试插入一个没有InvalidFrom值的项,例如:

代码语言:javascript
运行
复制
db.PutItem(new Child { ParentId = 2, Key = "Key2", Value = 2 });

如果Child没有全局索引,则会成功,但如果它有一个包含可空DateTime?范围键的IndexName,则会失败:

代码语言:javascript
运行
复制
Invalid attribute value type

本质上,AWS不允许在全局索引范围键上定义NULL值,但它将允许您在非RangeKey属性上插入空值。所以这个用例不受支持。

票数 3
EN

Stack Overflow用户

发布于 2018-05-24 22:32:46

PocoDynamo现在支持.net核心的价值

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38110152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档