LINQ to Entities и пустые строки

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

Но это всегда возвращает пустую коллекцию, когда 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;

Я абсолютно озадачен. Есть идеи?

15
задан hydroiodic 11 November 2011 в 07:26
поделиться