我可以为singleordefault< string>()调用指定一个键空间而不进行硬编码吗?

eimct9ow  于 2021-06-09  发布在  Cassandra
关注(0)|答案(1)|浏览(274)

我知道对于一个典型的 _mapper.SingleOrDefault<SomeType>(new Cql("?", ex)) 我可以为sometype创建Map并指定keybase。现在我想做:

var result = _mapper.SingleOrDefault<string>(new Cql("select json * from tablename where varname=?", arg));

var result = CassandraRetryHelper.SingleWithRemoteRetryAsync<string>(new Cql("select json * from tablename where varname=?", arg), _mapper);

如果我在表名之前硬编码keyspace名称,这两种方法都会得到所需的结果,但是我希望像第一个示例那样预先指定keyspace。有什么办法吗?谢谢您!

ha5z0ras

ha5z0ras1#

对于那个用例,你需要Map器吗?如果您只想运行一个查询而不涉及任何Map,那么可以使用 session.ExecuteAsync(query) .
在任何情况下,请尝试在生成器级别设置键空间,即。, builder.WithDefaultKeyspace() 在构建集群/会话对象时。
如果您使用多个键空间,那么恐怕您必须执行以下操作 $"select json * from {keyspace}.tablename where varname=?" . 使用这种方法,您将不会使用由c*验证的查询参数,因此请确保清除 keyspace 变量。

相关问题