2017-02-18 4 views
0

Я использую «CassandraCSharpDriver», и я не могу находиться в одном приложении для динамического использования разных пространств ключей. Класс «Таблица» всегда подключен к первому ключевому пространству, которое я использовал для подключения к базе данных. Вот пример кода:Невозможно переключить динамическое пространство ключей

class Program 
    { 
     static void Main(string[] args) 
     { 
      { 

       IDseCluster cluster = DseCluster.Builder() 
           .AddContactPoint("myPoint") 
           .Build(); 

       IDseSession session3 = cluster.Connect("keyspace_1"); 
       Row row3 = session3.Execute("select * from user_by_id").First(); 
       Console.WriteLine("keyspace_1 without table " + row3.GetValue<string>("username")); 
       //Result keyspace_1 without table user_from_keyspace_1 

       IDseSession session2 = cluster.Connect("keyspace_2"); 
       Row row2 = session2.Execute("select * from user_by_id").First(); 
       Console.WriteLine("keyspace_2 without table " + row2.GetValue<string>("username")); 
       //Result keyspace_2 without table user_from_keyspace_2 



      } 
      { 

       IDseCluster cluster = DseCluster.Builder() 
           .AddContactPoint("myPoint") 
           .Build(); 
       IDseSession session2 = cluster.Connect("keyspace_1"); 
       var table2 = new Table<UserByIdModel>(session2); 
       var user2 = table2.Execute().ToList().First(); 
       Console.WriteLine("keyspace_1 using table " + user2.UserName); 
       //Result keyspace_1 using table user_from_keyspace_1 


       IDseSession session = cluster.Connect("keyspace_2"); 
       var table = new Table<UserByIdModel>(session); 
       var user = table.Execute().ToList().First(); 
       Console.WriteLine("keyspace_2 using table " + user.UserName); 
       //Result keyspace_2 using table user_from_keyspace_1 


      } 
     } 
    } 

пожалуйста, помогите мне =)

ответ

1

В идеале, вы должны ввести один другой класс за другой стол. Linq component of the DataStax driver будет использовать конфигурацию, определенную при создании экземпляра Table<T>, чтобы определить, к какому ключу/таблице он сопоставляет. При использовании конструктора new Table<UserByIdModel>(ISession session) используемая конфигурация сопоставления представляет собой экземпляр MappingConfiguration.Global многократного использования.

Тем не менее, компонент Linq поддерживает несколько таблиц отображения в разных keyspaces на модели с использованием the specific constructor:

var config = MappingConfiguration.Global; 
const string table = "user_by_id"; 
var table1 = new Table<UserByIdModel>(session1, config, table, "keyspace_1"); 
var table2 = new Table<UserByIdModel>(session2, config, table, "keyspace_2");