Я использую nHibernate для поиска несовпадающих строк.
Модель такая:
PlayerGroup
имеет поле ExpectedPlaylistKey
Player
имеет поле LastReportedPlaylistKey
.
Один PlayerGroup
имеет много Players
.
Я хочу выполнить запрос, чтобы найти всех игроков, которые не соответствуют ожидаемому плейлисту группы.
Мой код выглядит следующим образом:
PlayerGroup playerGroupAlias = null;
Player playerAlias = null;
var query = this.Session.QueryOver<Player>(() => playerAlias)
.JoinAlias(() => playerAlias.PlayerGroup, () => playerGroupAlias)
.Where(
() => (playerGroupAlias.ExpectedPlaylistKey != playerAlias.CurrentlyReportedPlaylistKey)
);
Я проверил сгенерированный SQL, и он использует предложение where:
WHERE not (playergrou1_.ExpectedPlaylistKey = this_.CurrentlyReportedPlaylistKey)
К сожалению, если одно из этих значений равно NULL, тогда возвращается false, даже если другое значение не равно нулю.
Как мне исправить мой запрос nHibernate, чтобы он обрабатывал случай, если какая-либо строка имеет значение NULL?