繁体   English   中英

Cassandra C#驱动程序:在会话上更改键空间后,Linq表查询从第一个键空间返回的数据

[英]Cassandra C# driver: Linq table queries returning data from first keyspace after changing keyspace on session

我正在使用CassandraCSharpDriver 3.4.0.1

我的C#应用​​程序需要创建新的键空间,并能够在它们之间即时切换。 一切正常,除了直接表Linq Where查询,例如:

_table.Where(...).Execute(),

即使我使用新的会话重新创建表对象(或在同一会话上使用ChangeKeyspace),它总是从第一个键空间返回数据。

使用ExecuteAsync在会话中执行插入语句(从表对象创建)可以正常工作,并且数据已正确插入到新的键空间中。

var insert = _table.Insert(new Values()
                {
                    ...
                });

_session.ExecuteAsync(insert);

您应该在映射中为每个表定义一个类 如果在不同的键空间中有2个不同的表,则应使用2个不同的类。

另外,应避免在Session键空间之间切换以查询不同的表,可以在映射定义中指定表的键空间:

MappingConfiguration.Global.Define(
   new Map<User>()
      .TableName("users")
      .KeyspaceName("ks1")
      // ...
)

MappingConfiguration.Global.Define(
   new Map<AnotherClass>()
      .TableName("table2")
      .KeyspaceName("ks2")
      // ...
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM