2012-04-26 1 views
0

Я надеюсь, что кто-то может дать мне подсказку, связанную с текущим использованием NHibernate. Я не могу заставить работать следующий блок кода из-за того, что двоеточия рассматриваются как параметры. Есть ли способ избежать их?Escape colon in HQL (для использования географии :: STGeomFromWKB (...))

_session.CreateSQLQuery(
    "insert into disposal_site" 
    + "(geom, description) " 
    + "VALUES (geography::STGeomFromWKB(:wkb,4326), :description)") 
    .SetBinary("wkb", entity.wkb) 
    .SetString("description", entity.description) 
    .ExecuteUpdate() 

Любая помощь будет очень признательна!

С наилучшими пожеланиями, мартеновских

+0

Вы пробовали \: \: или ::::? – Rippo

ответ

1

Возможным решением (не пробовали) будут регистрировать вашу функцию с именем, которое не имеет двоеточия.

Вы делаете это, наследуя соответствующий диалект (например, MsSql2008Dialect) и используя RegisterFunction в конструкторе.

+0

Хороший намек, но не смог заставить его работать, поэтому я переместил работу в базу данных и создал функцию PL/SQL, которая выполняет эту работу. Переключение оснований вызывает больше усилий таким образом, но это не должно быть сделано, что часто так или иначе ;-) –