我正在编写一些代码来为我的应用程序准备我的数据库。代码中有一些重复的 SQL 语句,当我创建表时,我想将它们隐藏在某些方法中(目前只有两个:创建主键和使表的 id 成为自动递增的postgres)。对于主键的简单情况,我先写了一个这样的函数:
public void MakePrimaryKey(DbConnection conn, string tblName, string colName)
{
conn.Execute(@"
ALTER TABLE ""@tblName""
ADD CONSTRAINT ""@constrName"" PRIMARY KEY(""@colName"")
", new { tblName = tblName,
constrName = tblName + "_pkey",
colName = colName } );
}
经过大量的错误和异常摆弄,我终于得出结论,这种方式使用参数并不真正支持,所以我切换到传统的string.Format()
调用,一切都很好。
但我不是很满意。这种使用参数的方式真的不支持吗?如果是这样,我可以在哪些地方安全地使用这些参数?只针对 SQL 查询的可变部分——比如我可以使用存储过程参数的地方?