DataStax C# 驱动程序中的 ClusterKey 属性
ClusterKey Attribute in DataStax C# Driver
我一直在尝试使用 Cassandra 的 Datastax C# 驱动程序中的属性来使测试对象映射工作。
cassandra中有一个table定义为
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# class 映射到那个 table
[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 并出现 "Unknown identifier stringval" 问题。如果我更改 属性 的名称以匹配列名,一切正常,无论 ClusterKey
的名称 属性 设置为什么。
那么,为 ClusterKey
属性指定名称 属性 的目的是什么,甚至有什么作用?
您似乎遇到了 Mapper/Linq 组件中的驱动程序错误。我创建了一张票来跟踪它:CSHARP-507
幸运的是,有一个解决方法:包括 ColumnAttribute
和聚类键,在您的情况下是:
[Column("stringtext")]
[ClusteringKey]
public string stringVal;
我还在存储库中包含了一个失败的测试:https://github.com/datastax/csharp-driver/commit/9917bfff4ef569525a6df845f35d31d817e79dc0
我一直在尝试使用 Cassandra 的 Datastax C# 驱动程序中的属性来使测试对象映射工作。 cassandra中有一个table定义为
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# class 映射到那个 table
[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 并出现 "Unknown identifier stringval" 问题。如果我更改 属性 的名称以匹配列名,一切正常,无论 ClusterKey
的名称 属性 设置为什么。
那么,为 ClusterKey
属性指定名称 属性 的目的是什么,甚至有什么作用?
您似乎遇到了 Mapper/Linq 组件中的驱动程序错误。我创建了一张票来跟踪它:CSHARP-507
幸运的是,有一个解决方法:包括 ColumnAttribute
和聚类键,在您的情况下是:
[Column("stringtext")]
[ClusteringKey]
public string stringVal;
我还在存储库中包含了一个失败的测试:https://github.com/datastax/csharp-driver/commit/9917bfff4ef569525a6df845f35d31d817e79dc0