에서 열거 형을 참조하십시오. 열거 형은 EDMX 파일에 정의됩니다.어떻게 다음 (간체) 엔티티 SQL 쿼리가 엔티티 SQL
그대로,이 쿼리는 작동하지 않으므로 CustomerStatus가 Int32와 호환되지 않습니다 (기본 형식 은입니다). 그러나 열거 이름 앞에 어떤 네임 스페이스가 있더라도 IN {}
절에 대한 CustomerStatus 값 목록을 정의하는 방법을 찾을 수 없습니다. 예를 들어,
SELECT VALUE a
FROM Customers AS a
WHERE a.Status NOT IN { MyModelEntities.CustomerStatus.Reject, MyModelEntities.CustomerStatus.Accept }
는
는 컨테이너에 MyModelEntities.CustomerStatus을 찾을 수 없습니다 말, 또는 그러한 예외를 발생, 작동하지 않았다.
은 결국 나는SELECT VALUE a
FROM Customers AS a
WHERE CAST(a.Status AS System.Int32) NOT IN { 2, 3 }
로, int로하는 Status
캐스팅에 등을 의지하지만 난 더 우아한 해결책을 기대했다.
쿼리가 전송되기 전에 enum을 (int)로 캐스트 할 수 없습니까? –
@DanielLorenz 무슨 뜻인가요? 마지막 쿼리에서 볼 수 있듯이 결국 내가 한 일입니다. –
직접 SQL을 작성하거나 DbSet을 사용하고 있습니까? SQL을 직접 작성하는 경우 데이터베이스에 열거 형 개념이 없으므로 int를 사용해야합니다. EF는이를 int로 변환합니다. –