gpt4 book ai didi

c# - 在 NHibernate 中使用命名参数作为表名

转载 作者:太空宇宙 更新时间:2023-11-03 21:12:12 25 4
gpt4 key购买 nike

我需要对名为 myTable 的表执行简单的截断。所以我写了这个并且它有效:

statelessSession
.CreateSQLQuery("TRUNCATE TABLE myTable")
.ExecuteUpdate();

因为我会将表名存储在 App.config 中,所以我会将查询“参数化”。我会避免 String.Format 所以我尝试了类似的东西

statelessSession
.CreateSQLQuery("TRUNCATE TABLE :tabName")
.SetParameter("tabName", SysCfg.ConfigurationManager.AppSettings["tabName"])
.ExecuteUpdate();

但是当我运行这段代码时,我得到:

Additional information: could not execute native bulk manipulation query:
TRUNCATE TABLE :seedTableName[SQL: TRUNCATE TABLE @p0]

我也试过在参数名称周围使用花括号,但这也不起作用。

我哪里错了?

最佳答案

表格作为参数在这里解释

Table name as variable

Table names and column names need to be static, if the query is static. For dynamic table or column names, you should generate the full SQL dynamically,

因此,您应该将其构建为纯字符串

statelessSession
.CreateSQLQuery("TRUNCATE TABLE " + SysCfg.ConfigurationManager.AppSettings["tabName"])
.ExecuteUpdate();

关于c# - 在 NHibernate 中使用命名参数作为表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36910609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com