[MySQL EF 6] System.NotSupportedException: Unable to create a constant value of type [타입명] 예외 해결 방법
해당 예외가 발생하는 이유는 여러가지가 있겠으나 이번에 제가 경험한 내용을 바탕으로 글을 쓰도록 하겠습니다. 이 방법으로 해결이 안 되는 분께선 구글신의 힘을 빌리도록 하시길 바랍니다. 잘못된 비교 로직 여기 3개의 기본 키를 포함한 원시 타입과 1개의 외래 키 객체를 지니는 모델이 있습니다. public class ExampleModel { [Key] public int Id { get; set; } public decimal UpperLimitPrice { get; set; } public decimal MaximumPrice { get; set; } public UserModel User { get; set; } } 그리고 우리는 수많은 Example 중에서 특정 User 와 일치하는 레코드를 가져오고자 합니다. 직관적인 예를 들면, 게시판이 있는 웹 서비스에서 '내 글 보기'와 같은 기능을 구현 한다고 생각하시면 편합니다. 이때, 아래와 같이 코딩을 하면 이 포스트의 제목과 같은 예외가 발생하게 됩니다. _context.ExampleList.Where(ex => ex.User == userClient); 왜일까요? 이유는 바로 EF에서 원시 타입이 아닌 객체의 비교를 지원하지 않기 때문 입니다. 즉, string, int, long, float, double, decimal, ... 이런 타입이라면 비교가 가능하지만, 사용자가 직접 만든 클래스의 객체, 여기선 UserModel의 객체에 대한 비교는 지원하지 않는다는 것이죠. 이유를 생각해보면 간단합니다. 우리가 SQL로 SELECT 쿼리를 날릴 때, 예를 들어 게시판에서 특정 유저가 쓴 글의 레코드만 가져온다고 하면 SELECT id, title, body, registeredDate FROM board WHERE userId = '[외래 키로 연결된 유저 테이...