当范围键为null时,我希望查询GSI。我有这段代码,但它引发了一个异常
IPocoDynamo dbDynamo = new PocoDynamo(new AmazonDynamoDBClient());
var queryExpression = dbDynamo.FromQueryIndex<IndexName>(x => x.InvalidFrom == (DateTime?)null);
var response = dbDynamo.Query(queryExpression);我的模特长得像这样
[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; }
}这是我的索引
public class IndexName: IGlobalIndex<Child>
{
[HashKey]
public int ParentId { get; set; }
[RangeKey]
public DateTime? InvalidFrom { get; set; }
public int ChildId { get; set; }
}我做错什么了?
谢谢
发布于 2016-06-30 03:22:12
首先,在使用查询时,始终需要在查询中提供哈希,因此它需要的最小值为:
var q = dbDynamo.FromQueryIndex<IndexName>(x =>
x.ParentId = parentId && x.InvalidFrom == (DateTime?)null);但是尝试插入一个没有InvalidFrom值的项,例如:
db.PutItem(new Child { ParentId = 2, Key = "Key2", Value = 2 });如果Child没有全局索引,则会成功,但如果它有一个包含可空DateTime?范围键的IndexName,则会失败:
Invalid attribute value type本质上,AWS不允许在全局索引范围键上定义NULL值,但它将允许您在非RangeKey属性上插入空值。所以这个用例不受支持。
发布于 2018-05-24 22:32:46
PocoDynamo现在支持.net核心的价值
https://stackoverflow.com/questions/38110152
复制相似问题