DataStax C#Driver中的ClusterKey属性

时间:2016-09-22 14:48:25

标签: c# cassandra datastax

我一直在尝试使用Cassandra的Datastax C#驱动程序中的属性来测试对象映射。 cassandra中有一个由

定义的表
CREATE TABLE test.omfieldtest (
    integer int,
    bigint varint,
    stringtext text, 
    universal uuid, 
    bool boolean, 
    singleprecision float,
    variableprecision decimal,
    PRIMARY KEY ((integer), bigint, stringtext, universal)
);

然后我有一个装饰的C#类来映射到该表

[Table("test.omfieldtest")]
    public class MappingTest
    {
        [PartitionKey]
        public Int32 integer;
        [ClusteringKey(0, SortOrder.Ascending, Name = "bigint")]
        public Int64 bigint;
        [ClusteringKey(1, SortOrder.Ascending, Name = "stringtext")]
        public string stringVal;
        [ClusteringKey(2, SortOrder.Ascending, Name = "universal")]
        public Guid universal;
        [Column("bool")]
        public bool boolVal;
        [Column("singleprecision")]
        public Single singlePrecisionVal;
        [Column("variableprecision")]
        public decimal variablePrecisionVal;
    }

使用mapper.Insert<MappingTest>时,会抛出InvalidQueryException,并出现&#34;未知标识符stringval&#34;。如果我更改属性名称以匹配列名,一切正常,无论如何将ClusterKey的Name属性设置为。

那么为ClusterKey属性指定Name属性的目的甚至是什么效果呢?

1 个答案:

答案 0 :(得分:0)

看起来你在Mapper / Linq组件中遇到了驱动程序错误。我创建了一张跟踪它的票证:CSHARP-507

幸运的是,有一个解决方法:包括ColumnAttribute以及群集密钥,在您的情况下将是:

[Column("stringtext")]
[ClusteringKey]
public string stringVal;

我还在存储库中包含了一个失败的测试:https://github.com/datastax/csharp-driver/commit/9917bfff4ef569525a6df845f35d31d817e79dc0