Таким образом, моя ситуация такова, что у меня есть модель linq-to-sql, которая не позволяет датам быть нулевыми в одной из моих таблиц.Это предназначено, потому что база данных не допускает пустые значения в этом поле.Моя проблема в том, что когда я пытаюсь написать запрос Linq с этой моделью, я больше не могу выполнить левое соединение с этой таблицей, потому что дата не является полем 'nullable', и поэтому я не могу сравнить его с «Nothing».
Пример: есть таблица Movie {ID, MovieTitle} и таблица Showings {ID, MovieID, ShowingTime, Location}
Теперь я пытаюсь написать оператор, который будетверните все те фильмы, у которых нет показов.В T.SQL это выглядело бы так:
Select m.*
From Movies m Left Join Showings s On m.ID = s.MovieID
Where s.ShowingTime is Null
Теперь в этой ситуации я мог бы проверить на Null в поле 'Location', но это не то, что у меня есть на самом деле (просто упрощенный пример).Все, что у меня есть, - ненулевые даты.
Я пытаюсь написать в Linq:
From m In dbContext.Movies _
Group Join s In Showings on m.ID Equals s.MovieID into MovieShowings = Group _
From ms In MovieShowings.DefaultIfEmpty _
Where ms.ShowingTime is Nothing _
Select ms
Однако я получаю сообщение об ошибке, говоря, что
Оператор 'Is' делаетне принимать операнды типа «Дата».Операнды должны быть ссылочными или обнуляемыми.
Есть ли способ обойти это?Модель верна, в таблице Showings: ShowTime никогда не должно быть нулевого значения.Но если вы выполняете левое соединение, и для определенного фильма нет времени показа, тогда ShowTime НЕ ДОЛЖЕН быть ничем для этого фильма ...
Спасибо всем за помощь.