2017-05-11 120 views
1
var keyspace = "mydb"; 
var datacentersReplicationFactors = new Dictionary<string, int>(0); 
var replication = ReplicationStrategies.CreateNetworkTopologyStrategyReplicationProperty(datacentersReplicationFactors); 

using (var cluster = Cluster.Builder().AddContactPoints("my_ip").Build()) 
using (var session = cluster.Connect()) 
{ 
    session.CreateKeyspaceIfNotExists(keyspace, replication, true); 
    session.ChangeKeyspace(keyspace); 

    var entityTable = new Table<Models.Entity>(session); 
    var attributeTable = new Table<Models.Attribute>(session); 

    entityTable.CreateIfNotExists(); // Worked 
    attributeTable.CreateIfNotExists(); // Worked 

    entityTable.Delete(); // Does nothing 
    attributeTable.Delete(); // Does nothing 
} 

編輯:沒有使用原始查詢session.Execute("DROP TABLE entities;");工作正常。如何使用C#Datastax驅動程序刪除Cassandra上的表?

回答

2

除非已經存在的下降,我不知道,你可以使用這個擴展表的方法。

public static class DastaxTableExtensions 
{ 
    public static void Drop<T>(this Table<T> table) 
    { 
     table.GetSession().Execute($"DROP TABLE {table.Name};"); 
    } 

    public static void DropIfExists<T>(this Table<T> table) 
    { 
     table.GetSession().Execute($"DROP TABLE IF EXISTS {table.Name};"); 
    } 
} 

然後你可以使用它像這樣

entityTable.Drop(); 
attributeTable.DropIfExists(); 
4

Delete()方法不適用於刪除表。它返回DELETE cql語句的表示形式。如果你打電話給你,你只需要{DELETE FROM entities}

如果你需要刪除表,最簡單的辦法就是執行DROP語句:

session.Execute("DROP TABLE entities;"); 
+0

我得到 「行0:-1不匹配輸入 '' 期待K_WHERE」 – Almis

+0

被刪除返回查詢什麼()? – CodeFuller

+0

嗯,似乎這是DELETE命令,而不是DROP,我得到'{DELETE FROM entities}' – Almis

相關問題