【发布时间】:2017-12-15 08:40:20
【问题描述】:
我正在尝试像这样更新 Cassandra 中的时间戳字段:
await new Table<MyEntity>(_session).Where(e => e.Id == entity.Id)
.Select(u => new MyEntity
{
EndDate = DateTimeOffset.UtcNow
})
.Update()
.ExecuteAsync();
但是它会抛出“对象引用未设置为对象的实例”。使用 cassandra 堆栈跟踪:
at Cassandra.Data.Linq.CqlExpressionVisitor.GetPropertyValue(MemberExpression node)
at Cassandra.Data.Linq.CqlExpressionVisitor.GetClosureValue(MemberExpression node)
at Cassandra.Data.Linq.CqlExpressionVisitor.AddProjection(Expression node, PocoColumn column)
at Cassandra.Data.Linq.CqlExpressionVisitor.FillUpdateProjection(MemberExpression node)
at Cassandra.Data.Linq.CqlExpressionVisitor.VisitMemberInit(MemberInitExpression node)
at Cassandra.Data.Linq.CqlExpressionVisitor.VisitLambda[T](Expression`1 node)
at Cassandra.Data.Linq.CqlExpressionVisitor.VisitMethodCall(MethodCallExpression node)
at Cassandra.Data.Linq.CqlExpressionVisitor.GetUpdate(Expression expression, Object[]& values, Nullable`1 ttl, Nullable`1 timestamp, MapperFactory mapperFactory)
at Cassandra.Data.Linq.CqlUpdate.GetCql(Object[]& values)
at Cassandra.Data.Linq.CqlCommand.<ExecuteAsync>d__34.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
尝试更新其他字段可以正常工作,如果我从 .Select 列表中删除 EndDate 字段,它可以正常工作,所以有些东西我没有得到。是否需要某种特殊的时间戳映射?
【问题讨论】:
标签: c# cassandra cassandra-3.0