我一直在尝试使用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属性的目的甚至是什么效果呢?
答案 0 :(得分:0)
看起来你在Mapper / Linq组件中遇到了驱动程序错误。我创建了一张跟踪它的票证:CSHARP-507
幸运的是,有一个解决方法:包括ColumnAttribute
以及群集密钥,在您的情况下将是:
[Column("stringtext")]
[ClusteringKey]
public string stringVal;
我还在存储库中包含了一个失败的测试:https://github.com/datastax/csharp-driver/commit/9917bfff4ef569525a6df845f35d31d817e79dc0