2010-01-14 54 views
1

我在尝试运行NHibernate的以下查询时抛出的​​。的NHibernate的createQuery与方法CAL冒号

IQuery query = session.CreateQuery("from <table> where 1 in (select <column>.STIntersects(geography::STGeomFromText('POINT(:longitude :latitude)', 4326)))"); 

我在setQuery中设置经度和纬度。

我的假设是::在调用geography::STGeomFromText...,因为它认为这是一个查询参数。有没有办法逃离:

此查询适用于我的SQL Manager Studio。

谢谢!

回答

1

不NHibernate的支持STIntersects方法?

你可以做什么,是让NHibernate的执行(原生)SQL查询,例如:

ISQLQuery query = session.CreateSQLQuery ("your sql statement goes here"); 
query.AddEntity (typeof(TheEntityTypeThatYouWant)); 

var result = query.List<TheEntityTypeThatYouWant>(); 
+0

好的建议。我忘了提及我也尝试过。那些会冒出分号! – Erix 2010-01-14 14:55:59

0

只是为了分享我落得这样做服用ADO连接了NHibernate的会议,表演一个SqlCommand从结果直接手动构建我的Model对象。它很糟糕,但它有效。 NHibernate正确地管理连接。