1

我有一个删除级联的查询,这里是查询

create table satuan_type
(
    id int identity(1,1),
    satuan_id int(200),
    type_id int,
    primary key(id),
    foreign key(satuan_id) references satuan(id) on update cascade on delete cascade
);

问题是,如何使用 c# 创建/添加、删除和更新级联?因此查询在此方法中自动运行/创建

Dictionary<String, String> dic = new Dictionary<string, string>();
dic.Add("id", "INT PRIMARY KEY IDENTITY");
dic.Add("satuan_id", "INT");
dic.Add("type_id", "INT");
cDatabaseSQLServer.CreateTables("satuan_type", dic);

public int CreateTables(String tableName, Dictionary<String, String> data)
{
    switch (sqlType)
    {
        case DATABASE_SQL_TYPE.DATABASE_SQL_TYPE_SQLITE:
            return cSQLite.CreateTables(tableName, data);
        case DATABASE_SQL_TYPE.DATABASE_SQL_TYPE_MSSQL:
            return cSQL.CreateTables(tableName, data);
    }
    return 0;
}

public int CreateTables(String tableName, Dictionary<String, String> data)
{
    string s = "CREATE TABLE " + tableName + " (";
    bool first = true;
    foreach (KeyValuePair<String, String> val in data)
    {
        if (first)
        {
            first = false;
        }
        else
        {
            s = s + ",";
        }
        string s1;
        s1 = String.Format("{0} {1}", val.Key, val.Value);
        s = s + s1;
    }
    s = s + ")";
    return this.ExecuteNonQuery(s);
}
4

1 回答 1

0

我认为您需要在 CreateTables 方法中添加逻辑。最好添加更多参数,您可以在其中输入您想要约束的任何键。因为从我目前正在阅读的内容来看,您根本没有创建任何约束。这可以通过迭代您已经使用过的相同逻辑来实现,但分别针对主键和外键 - 最好使用布尔变量标志来标记它们是否应该级联。

不过,我建议您按照 MSI 的建议进行操作并使用 ORM。

于 2013-10-17T18:46:26.110 回答