У меня довольно странная вещь, происходящая в веб-приложении ASP.NET 4.0, использующем EF 4.0 в качестве базы данных.По сути, у меня есть таблица, в которой хранятся запросы пользователей на сброс пароля (содержащие ключ сброса типа byte[]
, срок действия типа DateTime
и внешний ключ для User
, содержащий 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;
Яабсолютно в тупик.Есть идеи?