많은 SQL 쿼리에 대해 .Net Framework 4 및 Linq to Entities를 사용하여 VB.Net에 여러 프로젝트가 있습니다. EF 로의 이전은 우리에게 새로운 변화입니다 (약 4-6 개월 동안 사용). 그리고 더 빨리 코딩 할 수 있기 때문에 고위 경영진의지지가 있습니다. 우리는 여전히 많은 수의 procs를 사용하지만 Linq를 통해 엔티티까지도 실행합니다.VB.Net 엔터티 Null 비교 Linq - 'Nothing'또는 'Nothing'입니까?
혼란 스러움을 분명히하기를 희망합니다. 나는 정답을 찾을 수 없습니다. 특정 필드가 NULL 값을 갖는 레코드를 원할 때 몇 가지 쿼리가 있습니다. 이 간단한 선택 쿼리, 왼쪽 조인없이 집계 또는이다 등 Microsoft는이 MSDN Link 같은 쿼리 보이는 뭔가를 권장합니다
dim query = from a in MyContext.MyTables
Where a.MyField = Nothing
Select a
내가 할 여러 프로젝트가를 정확히 그것은 좋은 작품, IDE에서 더 경고하지 . 최근에 다른 개발자가 새 프로젝트를 만들었고 위와 같이 null 체크를하면 IDE에서 다음과 같은 경고 메시지가 나타납니다.
경고 1이 표현식은 항상 Nothing으로 평가됩니다). 값이 null인지 확인하려면 '아무것도 아니요'를 사용하십시오.
프로젝트를 비교할 때 각각에 대해 explicit 및 option strict 옵션이 설정되어 있습니다. 경고를 무시하면 앱이 실행될 때 찾고있는 정확한 레코드 집합을 얻게됩니다. = 기호를 IS로 변경하면 경고가 사라집니다. 그러나이 경고는 왜 다른 프로젝트가 아닌 하나의 프로젝트에서만 나타 났습니까? MSDN에서도 equals 연산자를 사용하는 예제가있을 때 혼란 스럽습니다.
VB.NET LINQ에는 'Equals' 키워드도 있습니다. 나는 그것을 테스트 할 방법이 없지만, 대신 그것을 시도해 볼까? 'Where a.MyField Nothing' –
@Cory : 'Join' 절 (AFAIK)에서만 사용되는 상황 별 키워드입니다. 나는 당신이 다른 곳에 그것을 사용할 수 있다고 생각하지 않는다. –