Lets make the scenario simpiler:
SELECT
Id,
Name,
FROM
Widgets
WHERE
CONTAINS('fulltextcolumn', 'Foo Bar', 1) > 0
ORDER BY
SCORE(1)
If I wanted to add an order by using a function how would I approach
that with NH/Fluent? The Score(1) doesn't map to the entity and I
don't expect it to be returned. If I add it using:
criteria.AddOrder(new Order(Projections.SqlProjection("SCORE(1)", new
string[] { "Score" }, new NHibernate.Type.IType[]
{ NHibernateUtil.Int32 } ), false));
I get:
System.ArgumentException was unhandled by user code
Message="length should be greater than or equal to 0\r\nParameter
name: length"
Source="NHibernate"
ParamName="length"
StackTrace:
at NHibernate.SqlCommand.SqlString.Substring(Int32 startIndex,
Int32 length)
at NHibernate.Util.StringHelper.RemoveAsAliasesFromSql
(SqlString sql)
at NHibernate.Criterion.Order.ToSqlString(ICriteria criteria,
ICriteriaQuery criteriaQuery)
at NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetOrderBy
()
at NHibernate.Loader.Criteria.CriteriaJoinWalker..ctor
(IOuterJoinLoadable persister, CriteriaQueryTranslator translator,
ISessionFactoryImplementor factory, ICriteria criteria, String
rootEntityName, IDictionary`2 enabledFilters)
at NHibernate.Loader.Criteria.CriteriaLoader..ctor
(IOuterJoinLoadable persister, ISessionFactoryImplementor factory,
CriteriaImpl rootCriteria, String rootEntityName, IDictionary`2
enabledFilters)
at NHibernate.Impl.SessionImpl.List(CriteriaImpl criteria,
IList results)
at NHibernate.Impl.CriteriaImpl.List(IList results)
at NHibernate.Impl.CriteriaImpl.List[T]()
at foo.Common.Services.Repositories.Repository`1.FindAll
(Criteria query) in C:\Projects\foo\Trunk\Source\foo.Common.Services
\Repositories\Repository.cs:line 202
at foo.Services.fooService.FindAllBar(CriteriaDto criteriaDto)
in C:\Projects\foo\Trunk\Source\RealCondition.Services
\fooService.cs:line 40
at SyncInvokeFindAllBuildingItems(Object , Object[] , Object
[] )
at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke
(Object instance, Object[] inputs, Object[]& outputs)
at
System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin
(MessageRpc& rpc)
InnerException:
Thoughts?
Thanks,
Colin
On Jul 10, 12:32 pm, Tuna Toksoz <[email protected]> wrote:
> Score may be a special word (and it seems like it is) so change "Score" to
> sscore or sometihng.
>
> Tuna Toksöz
> Eternal sunshine of the open source mind.
>
> http://devlicio.us/blogs/tuna_toksozhttp://tunatoksoz.comhttp://twitter.com/tehlike
>
>
>
> On Fri, Jul 10, 2009 at 7:32 PM, Tuna Toksoz <[email protected]> wrote:
> > Projections.SqlProjection("SCORE(1) as Score",
> > new string[] { "Score" },
> > new
> > NHibernate.Type.IType[]{NHibernateUtil.Int32})
>
> > Try this
>
> > You can also use SqlFunctionProjection
>
> > Tuna Toksöz
> > Eternal sunshine of the open source mind.
>
> >http://devlicio.us/blogs/tuna_toksoz
> >http://tunatoksoz.com
> >http://twitter.com/tehlike
>
> > On Fri, Jul 10, 2009 at 7:27 PM, Tuna Toksoz <[email protected]> wrote:
>
> >> What error do you get and what is the exception you get?
>
> >> Tuna Toksöz
> >> Eternal sunshine of the open source mind.
>
> >>http://devlicio.us/blogs/tuna_toksoz
> >>http://tunatoksoz.com
> >>http://twitter.com/tehlike
>
> >> On Fri, Jul 10, 2009 at 7:15 PM, Colin Bowern <[email protected]> wrote:
>
> >>> CORE(1)- Hide quoted text -
>
> - Show quoted text -
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"nhusers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nhusers?hl=en
-~----------~----~----~----~------~----~------~--~---