我正在使用流利的nhibernate。
我写了一段代码,
var data = session.CreateCriteria(typeof(CustomerNameValueList))
.Add(Expression.Eq("CustomerId","3"))
.List<CustomerNameValueList>();
但是nhibernate生成的查询看起来像
select column1,column2,column3 from table where CustomerId=?
问题是“customerId =?” 已完成:CustomerId = 3“
为什么customerId =?而不是customerId = 3
请帮帮我。
答案 0 :(得分:2)
此查询没有任何问题。 '?'在日志中将替换为字符串值“3”。如果您的列类型实际上是一个int,那么您可能会遇到问题。查询的参数化是您希望保护您免受SQL注入攻击的原因。如果生成的查询按照您的预期具有CustomerId ='3'并且'3'来自网页上的文本框,则可以注入更多SQL,例如'3'DELETE FROM MyUserTable。