如何使用C#驱动程序更新cassandra中的时间戳字段?

时间:2017-07-11 10:27:34

标签: c# cassandra cassandra-3.0

我正在尝试更新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字段,它就可以正常工作,这是我无法获得的。是否需要某种特殊的时间戳映射?

2 个答案:

答案 0 :(得分:2)

我发布这篇文章后的那一刻,我有一个“到底是什么”的时刻并尝试过这个:

DateTimeOffset endDate = DateTimeOffset.UtcNow;

 await new Table<MyEntity>(_session).Where(e => e.Id == entity.Id)
    .Select(u => new MyEntity
    { 
        EndDate = endDate
    })
    .Update()
    .ExecuteAsync();

哪个,嗯。作品。因此,只需在Select之外明确定义值就可以了。我认为Linq提供商可能有点挑剔!

答案 1 :(得分:0)

CSHARP-577修复了一些有关“属性”的问题,但该问题与与静态属性有关的另一个问题-CSHARP-778

CSHARP-778发布之前,解决方法是完全按照您的意愿进行操作,即使用局部变量。

相关问题