2011-01-11 3 views
0

는 지금은이 일을 해요,하지만 난 그것을 매우 좋아하지 않는다 :Entity-Framework에서 Null을 캐치하는 좋은 방법은 무엇입니까?

decimal maxId = 0d; 
try 
{ 
    maxId = ent.SaveStates.Max(c => c.Id); 
} 
catch (Exception ex) //no entries in the db 
{ 
    maxId = 1; 
} 

엔티티 프레임 워크와 DB에서 널 (null)을 처리 할 수있는 더 나은 방법이 있나요?

+0

대답은 아니지만 '예외'를 ​​포기하지 않는 것이 좋습니다. 특정 예외 유형이 무엇인지 아는 경우 특정 유형을 사용하십시오. –

답변

1

는 다음이있다 :

maxId = ent.SaveStates.Count() > 0 ? ent.SaveStates.Max(c => c.Id) : null; 

나는 그 두 쿼리의 원인이됩니다 생각하지 않는다, 그러나 나는 확인을 프로파일 것입니다.

+0

저는 2 DB에 대해 정말로 걱정하지 않지만 프로필은 어떻게 작성합니까? – 0x4f3759df

+1

우리가 여기서 Sql Server를 사용한다고 가정하면 ... SQL Server Management Studio를 열고 Tools ... Sql Server Profiler를 선택하십시오. 보통처럼 DB에 연결하고 TSQL_SPs 템플릿을 선택하십시오. 일단 그렇게하면 서버의 모든 활동에 대한 디버그보기가 표시됩니다. 위의 명령문을 실행하고 두 개의 SELECT 문이 실행되었는지 또는 하나의 SELECT 문만이 실행되는지 확인한다. 프로파일 러는 ORM이 실제로 생성하는 것을보기에 매우 중요합니다. –

관련 문제