【发布时间】:2021-11-21 11:55:17
【问题描述】:
我目前正在尝试使用 C# Datastax cassandra 驱动程序 (3.6) 将一些 MongoDB 切换到 Cassandra,使用 LINQ 表达式使用表对象映射构建查询:
For<SomeClass>()
.TableName(path)
...
.Column(x => x.DataProvider, x => x.WithName("dp").WithDbType<Int32>().WithSecondaryIndex())
...
问题是 - 一些字段是枚举(映射到 Int32) - 虽然我设法使用自定义 TypeConverter 将它们写入数据库,但由于驱动程序的序列化程序,我在将它们用作查询参数时遇到了问题。
var mapping = new CassandraDBMapping(path);
var table = new Table<T>(session, new MappingConfiguration()
.ConvertTypesUsing(new CassandraTypeConverter())
.Define(mapping));
return table.Where(predicate).AllowFiltering().ExecuteAsync();
这可以通过创建一个 Enum 序列化程序并将其添加到驱动程序的序列化程序列表中来解决,但是,我正在寻找一种无需修改驱动程序本身的解决方案。
【问题讨论】:
标签: c# linq cassandra datastax