我有一个删除级联的查询,这里是查询
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#创建/添加,删除和更新级联?所以查询在这个方法中自动运行/ crete
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);
}
答案 0 :(得分:0)
我认为你需要为你的CreateTables方法添加逻辑。最好添加更多参数,您可以在其中输入您想要约束的任何键。因为我正在阅读的内容,你根本没有创造任何约束。这可以通过迭代你已经使用的相同逻辑来实现,但是分别对于主键和外键 - 最好使用布尔变量标志来标记它们是否应该级联。
虽然,我建议您按照MSI建议并使用ORM。