2009-01-31 3 views
1

어느 방식 으로든, Linq에서 SQL에 대한 enum 값에 조건부 연산자를 사용하면 문제가있는 것 같습니다. 예를 들어Linq to SQL Enums 및 조건부 연산자

var ret = from listings in db.Listings 
    select new Listing 
    { 
    ID = listings.ID, 
    //etc 
    OrderStatus = listings.OrderItems.Count > 0 
    ? listings.OrderItems.First().Order.OrderStatus : OrderStatus.NotCheckedOut 
}; 

System.Data.SqlClient.SqlException : 데이터 유형 INT에 '충전'을 NVARCHAR 값 ..

를 변환 할 때 내가 열거 필드를 떠날 때 변환 실패 nvarchar가 문자열로 매핑되어 비슷한 변환 오류가 발생합니다. 이 문제를 해결하는 방법?

+0

btw theres가 조건부 일 때 제대로 작동합니다. nvarchar를 int로 변환해도 문제가되지 않습니다. –

+0

"청구 됨"nvarchar는 무엇입니까? –

+0

Orders 테이블에 문자열로 저장된 enum입니다. –

답변

1

이 방법이 효과적일까요?

var ret = from listings in db.Listings 
let ordS = listings.OrderItems.Count > 0 ? 
         listings.OrderItems.First().Order.OrderStatus.ToString() : OrderStatus.NotCheckedOut.ToString() 
    select new Listing 
    { 
    ID = listings.ID, 
    //etc 
    OrderStatus = (OrderStatus)Enum.Parse(typeof(OrderStatus), ordS) 
}; 
+0

또한 Linq 형식을 SQL 엔터티 속성으로 설정하는 것을 잊지 말고 디자이너에서이 작업을 수행하는 enum 형식이되고 "global :: OrderStatus"구문을 사용하십시오. –