Yes:
[LinqExtensionMethod]public static String Soundex(this String input)
{
throw new NotImplementedException();
}
And you can call it like this (in SQL Server, because of the SOUNDEX
function, but can be adapted to any server):
var soundexName = session.Query<Customer>().Select(x =>
x.Name.Soundex()).First();
Let me know if this helps!
RP
On Friday, June 6, 2014 1:38:16 PM UTC+1, Gunnar Liljas wrote:
>
> No, it's possible to create custom SQL with it as well, since you can
> register custom functions. Not sure about this particular syntax though.
>
> /g
>
> On 5 jun 2014, at 20:54, Ricardo Peres <[email protected] <javascript:>>
> wrote:
>
> AFAIK, this method only works for translating custom extensions into HQL.
> Since HQL does not support MATCH...AGAINST, there's nothing you can do.
> One possible alternative could possibly be writing a custom function in
> MySQL that would wrap MATCH...AGAINST and calling it from LINQ. That is
> possible.
>
> RP
>
>
> On Thursday, June 5, 2014 8:41:49 AM UTC+1, Joel Hervén wrote:
>>
>> I´ve tried to write a LINQ extension that executes the MySQL function
>> MATCH(...,...) AGAINST(...). But I have not been able to translate it into
>> appropriate HQL because of the "two functions" syntax.
>>
>> To have something to look at I wrote this method
>>
>> public override HqlTreeNode BuildHql(MethodInfo method, Expression
>> targetObject, ReadOnlyCollection<Expression> arguments, HqlTreeBuilder
>> treeBuilder, IHqlExpressionVisitor visitor)
>> {
>> var e1 = treeBuilder.MethodCall("MATCH", new[]
>> {
>> visitor.Visit(arguments[0]).AsExpression(),
>> });
>>
>> var e2 = treeBuilder.MethodCall("AGAINST", new[]
>> {
>> visitor.Visit(arguments[1]).AsExpression(),
>> });
>>
>> return
>> treeBuilder.Equality(e1, e2);
>> }
>>
>> The Equality method is obviously not the correct thing here but it will
>> generate the SQL "MATCH(....)+AGAINST(....)" which is very close to correct
>> except the + sign that shouldn´t be there. I have looked at the
>> HqlTreeBuilder many times but I can´t find a working method to just add up
>> the methods like needed here.
>>
>> So next thing was to look at the HqlTreeBuilder and try to extend with an
>> alternative
>>
>> public class HqlDoubleMethod : HqlBooleanExpression
>> {
>> public HqlDoubleMethod(IASTFactory factory, HqlExpression lhs,
>> HqlExpression rhs)
>> : base(0, "", factory, lhs, rhs)
>> {
>> }
>> }
>>
>> Calling this method instead of Equality results in a
>> RewriteEmptyStreamException rule b
>>
>>
>> Is it possible to implement this kind of function without modifying the
>> Nhibernate-core?
>>
> --
> You received this message because you are subscribed to the Google Groups
> "nhusers" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected] <javascript:>.
> To post to this group, send email to [email protected] <javascript:>
> .
> Visit this group at http://groups.google.com/group/nhusers.
> For more options, visit https://groups.google.com/d/optout.
>
>
--
You received this message because you are subscribed to the Google Groups
"nhusers" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/nhusers.
For more options, visit https://groups.google.com/d/optout.