【问题标题】:Can I specify a keyspace for a SingleOrDefault<string>() call without hardcoding it?我可以为 SingleOrDefault<string>() 调用指定一个键空间而不对其进行硬编码吗?
【发布时间】:2021-03-24 16:10:20
【问题描述】:

我知道对于典型的_mapper.SingleOrDefault&lt;SomeType&gt;(new Cql("?", ex)) 调用,我可以为 SomeType 创建一个映射并指定一个密钥库。现在我想做:

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);

如果我在表名之前对键空间名称进行硬编码,这两种方法都会给出预期的结果,但我想像第一个示例一样预先指定键空间。有没有办法做到这一点?谢谢!

【问题讨论】:

  • 定义“keybase”和“keyspace
  • 对不起,keybase 是一个不相关的变量。 @TheGeneral

标签: c# cassandra cql


【解决方案1】:

对于该用例,您是否需要映射器?如果您只想运行不涉及任何映射的查询,您可以使用session.ExecuteAsync(query)

无论如何,在构建集群/会话对象时尝试在构建器级别设置键空间,即builder.WithDefaultKeyspace()

如果您使用多个键空间,那么恐怕您将不得不执行$"select json * from {keyspace}.tablename where varname=?" 之类的操作。使用这种方法,您将不会使用由 C* 验证的查询参数,因此请确保清理 keyspace 变量。

【讨论】:

    猜你喜欢
    • 2020-12-13
    • 2021-09-12
    • 1970-01-01
    • 2016-04-07
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    • 2011-09-13
    相关资源
    最近更新 更多