C# 在运行时动态选择SQL表值函数?

C# 在运行时动态选择SQL表值函数?,c#,nhibernate,C#,Nhibernate,在开始之前,我建议大家看一看应用程序之外的某种报告软件,但由于时间有限,我现在要问的是这个问题 我正在构建一个函数,希望使用参数设置。如何避免以下情况 //extremely dangerous var queryString = "Select * from dbo." + functionName + "(:startDate, :endDate)"; var result = GetANHibernateSession().CreateSQLQuery(queryString)

在开始之前,我建议大家看一看应用程序之外的某种报告软件,但由于时间有限,我现在要问的是这个问题

我正在构建一个函数,希望使用参数设置。如何避免以下情况

//extremely dangerous
var queryString = "Select * from dbo." + functionName + "(:startDate, :endDate)";
var result = GetANHibernateSession().CreateSQLQuery(queryString)
                 .SetDateTime("startDate", startDate)
                 .SetDateTime("endDate", endDate);
函数可以在运行时来来去去,这意味着我不能在编译时构建查询

编辑:我还应该指出,functionName不是来自不受信任的源,而是在数据库本身内部,没有面向外部的插入机制。不过,这只是一个小小的安全措施