2011-12-20 3 views
3

Я пытаюсь сделать что-то вроде:Как сравнить строки с nhibernate?

Session.Query<VoiceMailNumber>() 
      .Where(x => (x.From.CompareTo(number) > 0) && 
        (x.To.CompareTo(number)) > 0) 

Но что бросает System.NotSupportedException.

От и числа обе строки.

Любое решение?

+1

Определить, что «не работает», это бросает легендарное 'DoesntWorkException', что он делает? –

+0

№ System.NotSupportedException – Anders

+2

IMHO nhibernate cant "translate CompareTo() function to sql statement", поэтому попробуйте 'x.From == number' – Reniuz

ответ

1

Это решает его:

Session.CreateCriteria(typeof(VoiceMailNumber)) 
       .Add(Expression.Le("From", number)) 
       .Add(Expression.Ge("To", number)) 
       .UniqueResult<VoiceMailNumber>(); 

Я не очень счастлив с этим решением , но поскольку невозможно сравнивать строки с использованием запроса или запроса, это нужно будет сделать.

0

Вы можете сравнить строки точно, используя следующий синтаксис:

Session.Query<VoiceMailNumber>() 
    .Where(x => x.From==number) 
    .And(x=>x.To==number); 

транслирует на:

select * from VoiceMailNumber where From='123456' and To='123456' 
+2

Да. Но я не хочу проверять, равны ли они. – Anders

+0

Какую функцию SQL вы хотите использовать для сравнения? –

Смежные вопросы