Недавно я перенес этот код в Entity Framework 4, и он не работает. Очевидно, если статус не имеет значения, верните все совпадения, если он имеет значение, соответствующее значению user.StatusID == 1
.
return users.SingleOrDefault(
user =>
user.Username == username &&
user.EncryptedPassword == password &&
(!status.HasValue || user.StatusID == 1)
);
Возвращено исключение:
ArgumentException: The specified value is not an instance of type 'Edm.Int32'
Parameter name: value
Однако, удалив условный тест, и он отлично работает:
return users.SingleOrDefault(
user =>
user.Username == username &&
user.EncryptedPassword == password &&
user.StatusID == 1
);
Любые идеи? Как вы выполняете условное тестирование в EF 4? Разумеется, не разделяются ли строки?
Я использую эти условные тесты снова и снова в Linq to Sql; это действительно странно, почему это не работает в EF 4. Должно быть что-то простое не так, возможно, есть рекомендуемый альтернативный способ делать что-то в EF 4.0.
Спасибо за помощь, ребята,
Graham