如何删除带有错误主键的cassandra行,因为Cassandra C#Driver Complains Timestamp类型列超出范围

时间:2016-01-28 01:56:37

标签: c# cassandra cql

我有一个像这样的C#代码,

RowSet rows = cassandraSession.Execute("select * from mytable");
foreach( var row in rows)
{
    DateTimeOffset dt = (DateTimeOffset)row["last_modified"];
    // Construct the primary key and delete an row ....
}

当我将数据插入mytable时,我将DateTime.UtcNow.Ticks作为列的值" last_modified" [时间戳]。但是,当上面的代码运行时,它总是在行[" last_modified"]中抛出ArgumentOutOfRangeException。

不幸的是,last_modified是主键的一部分,我现在无法查询并删除。

任何想法和解决方案?

1 个答案:

答案 0 :(得分:0)

Cassandra timestamp在C#驱动程序中表示为DateTimeOffset(不是刻度的长值)。

要获取作为RowSet的一部分检索的列,您可以使用Columns属性。

RowSet rs = cassandraSession.Execute("select * from mytable");
//Print all the column names
Console.WriteLine(string.Join(", "), rs.Columns.Select(c => c.Name));
foreach (var row in rs)
{
    //Use the typed GetValue<T>() method
    DateTimeOffset dt = row.GetValue<DateTimeOffset>("last_modified");
}