Почему я не могу ничего вернуть, когда использую Linq для Sql Select? - PullRequest
1 голос
/ 03 февраля 2011

Не могли бы вы проверить мой код?Почему я не могу получить какие-либо значения обратно при использовании Linq to Sql?

BHS_TimeSheet - это моя таблица базы данных, в которой есть несколько записей.

Model.TimeSheet - это класс, который я создаю вмодель.

Private db As DataFactoryDataContext

Public Sub New()
    db = New DataFactoryDataContext
End Sub

Public Sub New(ByVal repository As DataFactoryDataContext)
    db = repository
End Sub

Public Function GetTimeSheetByProject(ByVal wbs1 As String, ByVal wbs2 As String, ByVal wbs3 As String) _
    As List(Of Model.TimeSheet) Implements ITimeSheetRepository.GetTimeSheetByProject

    Return (From ts In db.BHS_TimeSheets _
            Where ts.WBS1.Equals(wbs1) And ts.WBS2.Equals(wbs2) And ts.WBS3.Equals(wbs3) _
            Select New Model.TimeSheet(ts.TSBatchNo, ts.Employee, ts.TransDate, ts.WBS1, ts.WBS2, ts.WBS3, ts.LaborCode, _
                                       ts.RegHrs, ts.OvtHrs, ts.SpecialOvtHrs, ts.TransComment, ts.Status, ts.AuthorizedBy, _
                                       ts.RejectReason, ts.ModDate)).ToList

End Function

1 Ответ

2 голосов
/ 03 февраля 2011

Ваш оператор Linq-to-SQL

   (From ts In db.BHS_TimeSheets 
    Where ts.WBS1.Equals(wbs1) 
      And ts.WBS2.Equals(wbs2) 
      And ts.WBS3.Equals(wbs3) _

в основном соответствует этому запросу SQL:

SELECT * FROM dbo.BHS_TimeSheets
 WHERE WBS1 = (value for wbs1)
   AND WBS2 = (value for wbs2)
   AND WBS3 = (value for wbs3)

Возвращает ли этот запрос SQL какие-либо значения, если вы вызываете его с помощью SQLServer Management Studio использует те же параметры для wbs1, wbs2, wbs3, что и в коде Linq-to-SQL ??

Обновление: все в порядке, поэтому запрос SQL возвращает результаты - следующий шаг: шаг за шагом подойти к Linq-to-SQL.Сначала попробуйте это - вы получаете какие-либо результаты ??

Dim basicQueryResults = (From ts In db.BHS_TimeSheets 
                         Where ts.WBS1.Equals(wbs1) 
                           And ts.WBS2.Equals(wbs2) 
                           And ts.WBS3.Equals(wbs3)
                         ).ToList();

Имеет ли ваш результирующий список элементов .Count > 0 или нет ??

Если нет: значит, что-то не так с вашей моделью Linq-to-SQL.Вы изменили свою базу данных и не обновили файл DBML?Можете ли вы удалить файл DBML и сделать это снова - работает ли он сейчас?Или у вас все еще такие же результаты ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...