DataStax c#驱动程序中的ClusterKey属性
本文关键字:ClusterKey 属性 驱动程序 DataStax | 更新日期: 2023-09-27 18:08:23
我一直在尝试使用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,并伴有"未知标识符字符串"的问题。如果我更改属性的名称以匹配列名,那么无论ClusterKey
的name属性设置为什么,一切都可以正常工作。
那么为ClusterKey
属性指定Name属性的目的或效果是什么呢?
看起来你在Mapper/Linq组件中遇到了一个驱动程序错误。我已经创建了一个ticket来跟踪它:CSHARP-507
幸运的是,有一个解决方案:包括ColumnAttribute
和集群键,在您的情况下将是:
[Column("stringtext")]
[ClusteringKey]
public string stringVal;
我还在存储库中包含了一个失败的测试:https://github.com/datastax/csharp-driver/commit/9917bfff4ef569525a6df845f35d31d817e79dc0