#sql #linq-to-sql
#sql #linq-to-sql
Вопрос:
У меня есть следующий SQL-запрос:
SELECT DISTINCT
Participant.BackgroundTrainingID,
Location.TrainingSite
FROM Registration, ProgramLocation, Participant, Program, Location
WHERE ProgramLocation.LocationID = Location.LocationID
AND ProgramLocation.ProgramID=Registration.ProgramID
AND Registration.ParticipantID=Participant.ParticipantId
Я написал следующую ссылку на SQL, чтобы соответствовать приведенному выше запросу:
var trainingsiteinfo = (from c in db.ProgramLocations
from n in db.Registrations
from l in db.Participants
from h in db.Locations
where c.LocationID == h.LocationID
amp;amp; c.ProgramID == n.ProgramID
amp;amp; n.ParticipantID == l.ParticipantId
select new {
h.TrainingSite,
l.BackgroundTrainingID }).Distinct();
SQL-запрос работает нормально, но LINQ постоянно возвращает null.
Комментарии:
1. Что вы подразумеваете под «возвращает null»?
Distinct
не возвращаетnull
. Однако он может возвращать пустое перечисление, и ваш код может выдатьNullReferenceException
. Вы имели в виду один из них?2. Я предполагаю, что моя часть отладки была неправильной, когда я тестировал, но просто исправил спасибо за помощь
Ответ №1:
Я использую Linqer http://www.sqltolinq.com / когда у меня закончатся идеи 🙂 Кроме того, это ускоряет выполнение заданий преобразования.
Ответ №2:
Убедитесь, что контекст вашей базы данных не выходит за рамки, прежде чем вы свяжете свои результаты. Вы можете проверить это, добавив .ToList()
после вашего .Distinct()
, чтобы принудительно загружать результаты.
Ответ №3:
В вашем коде linq есть незакрытая скобка } в инструкции select