У меня довольно странная вещь, происходящая в веб-приложении ASP.NET 4.0 с использованием EF 4.0 в качестве базы данных. По существу, у меня есть таблица, в которой хранятся пароли пользователей reset (содержащий reset ключ типа byte[]
, истечение срока действия DateTime
и внешний ключ , содержащий a string Email
и string Name
). У некоторых пользователей нет набора адресов электронной почты, поэтому для PasswordRequest request
, request.Email
есть null
.
Вот проблема. Это прекрасно работает:
string u = Request["u"];
string e = Request["e"];
var requests = from r in context.PasswordRequests
where r.User.Name == u && r.User.Email == null && r.Expiry >= DateTime.Now
select r;
Я получаю ожидаемое количество результатов (отличное от нуля, поскольку есть записи с null
сообщениями электронной почты).
Но это всегда возвращает пустую коллекцию, когда e
есть null
:
string u = Request["u"];
string e = Request["e"];
var requests = from r in context.PasswordRequests
where r.User.Name == u && r.User.Email == e && r.Expiry >= DateTime.Now
select r;
Единственное, что мне нужно для правильной работы (что логически не имеет смысла), следующее:
string u = Request["u"];
string e = Request["e"];
IQueryable<PasswordRequest> requests;
if (e == null)
requests = from r in context.PasswordRequests
where r.User.Name == u && r.User.Email == null && r.Expiry >= DateTime.Now
select r;
else
requests = from r in context.PasswordRequests
where r.User.Name == u && r.User.Email == e && r.Expiry >= DateTime.Now
select r;
Я абсолютно в тупике. Любые идеи?