ActiveRecord Linq / NHibernate Linq не создает запрос полностью - PullRequest
0 голосов
/ 14 июля 2011

с учетом этой функции:

Public Function Search(ByVal StartIndex As Integer, _
 ByVal MaxResults As Integer, _
 ByVal AccountNumber As String, _
 ByVal LastName As String, _
 ByVal FirstName As String, _
 ByVal DateOfService As String, _
 ByVal CPTCode As String, _
 ByVal Contract As String, _
 ByVal ClaimNumber As String, _
 ByVal PaidAmount As String, _
 ByVal CheckNumber As String, _
 ByVal SortExpression As String, _
 ByRef count As Integer) As RemitLineItemEntity() 

Я пытаюсь создать предложение по одному фрагменту за раз на основе параметров, передаваемых в функцию, например:

    If Not String.IsNullOrEmpty(AccountNumber) Then
        If AccountNumber.Contains("%") Then
            remits = remits.Where(Function(r) r.MedicalRecordNumber Like AccountNumber.Replace("%", "*"))
        Else
            remits = remits.Where(Function(r) r.MedicalRecordNumber = AccountNumber)
        End If
    End If
    If Not String.IsNullOrEmpty(LastName) Then
        If LastName.Contains("%") Then
            remits = remits.Where(Function(r) r.LastName Like LastName.Replace("%", "*"))
        Else
            remits = remits.Where(Function(r) r.LastName = LastName)
        End If
    End If

... еще много операторов if для других параметров

        _log.Debug("Start Count query")
        count = remits.Count()
        _log.Debug("End Count query")

Вызов этой функции с помощью lastname = "smith", когда я добираюсь до строки count=remits.Count(), наблюдая за SQL Profiler, он генерирует sql следующим образом (преобразуется изчто генерирует nhibernate):

Select count(*) from remitline

вместо того, что я ожидал:

Select count(*) from remitline where lastname = "smith"

Что я делаю неправильно, создавая предложение where?Я использую Castle ActiveRecord 2.1

TIA

1 Ответ

0 голосов
/ 18 июля 2011

Обновлено до последней версии ActiveRecord (3.0 RC), и эта проблема исчезла.

...