【发布时间】:2015-11-14 03:21:42
【问题描述】:
假设我将记录插入以下模型的 Azure DocumentDb:
public class Message
{
[JsonProperty(PropertyName = "tid")]
public string Id { get; set; }
[JsonProperty(PropertyName = "start")]
public DateTimeOffset StartAt { get; set; }
}
它们都自动存储为字符串。我希望能够查询StartAt,所以我在上面添加了一个RngeIndex。我使用 Azure 门户来验证索引是否正常工作。
除此之外,我加载了 DocumentDb .NET SDK 并尝试以下查询:
var since = DateTimeOffset.UtcNow.Subtract(duration);
return Client.CreateDocumentQuery<T>(Collection.DocumentsLink)
.Where(m => m.AtStart > since)
.AsEnumerable();
但我得到了错误
[DocumentQueryException: Constant of type 'System.DateTimeOffset' is not supported.]
Microsoft.Azure.Documents.Linq.ExpressionToSql.VisitConstant(ConstantExpression inputExpression) +3204
Microsoft.Azure.Documents.Linq.ExpressionToSql.VisitBinary(BinaryExpression inputExpression, TranslationContext context) +364
Microsoft.Azure.Documents.Linq.ExpressionToSql.VisitBinary(BinaryExpression inputExpression, TranslationContext context) +349
Microsoft.Azure.Documents.Linq.ExpressionToSql.VisitScalarLambda(Expression inputExpression, TranslationContext context) +230
Microsoft.Azure.Documents.Linq.ExpressionToSql.VisitWhere(ReadOnlyCollection`1 arguments, TranslationContext context) +55
Microsoft.Azure.Documents.Linq.ExpressionToSql.VisitMethodCall(MethodCallExpression inputExpression, TranslationContext context) +799
Microsoft.Azure.Documents.Linq.ExpressionToSql.Translate(Expression inputExpression, TranslationContext context) +91
Microsoft.Azure.Documents.Linq.ExpressionToSql.TranslateQuery(Expression inputExpression) +46
Microsoft.Azure.Documents.Linq.SQLTranslator.TranslateQuery(Expression inputExpression) +20
Microsoft.Azure.Documents.Linq.<ExecuteAllAsync>d__7.MoveNext() +177
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +179
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +66
System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) +30
Microsoft.Azure.Documents.Linq.<GetEnumeratorTAsync>d__10.MoveNext() +632
有没有办法在不改变底层模型的情况下执行类型安全的查询?
【问题讨论】:
标签: azure-cosmosdb