流利的nhibernate:where子句中的问题

时间:2009-05-02 11:19:36

标签: nhibernate fluent-nhibernate

我正在使用流利的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

请帮帮我。

1 个答案:

答案 0 :(得分:2)

此查询没有任何问题。 '?'在日志中将替换为字符串值“3”。如果您的列类型实际上是一个int,那么您可能会遇到问题。查询的参数化是您希望保护您免受SQL注入攻击的原因。如果生成的查询按照您的预期具有CustomerId ='3'并且'3'来自网页上的文本框,则可以注入更多SQL,例如'3'DELETE FROM MyUserTable。