최근에이 코드를 Entity Framework 4로 마이그레이션했는데 실패했습니다. 분명히 상태에 값이 없으면 모든 일치를 반환합니다. 일치하는 값이있는 경우 user.StatusID == 1
입니다. 그러나Entity Framework 4의 간단한 조건부 LINQ 쿼리
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 &&
(!status.HasValue || user.StatusID == 1)
);
예외가 반환
return users.SingleOrDefault(
user =>
user.Username == username &&
user.EncryptedPassword == password &&
user.StatusID == 1
);
어떤 아이디어? EF 4에서 조건부 테스트를 어떻게 수행합니까? 라인이 분리되지 않았습니까?
나는 이러한 조건부 테스트를 Linq에서 Sql으로 다시 사용합니다. EF 4에서 이것이 작동하지 않는 이유는 정말로 이상합니다. EF 4.0에서 뭔가를하는 것이 권장되는 대체 방법이있을 수 있습니다. 당신의 도움들에 대한
감사합니다,
그레이엄
무엇이'Edm.Int32'입니까? 그것은 당신 자신의'System.Int32' 구현입니까? – Stecya
@Stecya : http://msdn.microsoft.com/en-us/library/bb387164.aspx는 EF의 내부 구조로 보입니다. – Euphoric