Я недавно перенес этот код в 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