2013-07-01 2 views
0

두 테이블, 보트 및 선원이있는 데이터베이스가 있다고 가정 해 보겠습니다. 배에 서비스 한 선원들과 정보가 담긴 많은 텍스트 파일을 가지고 있다고 가정 해보십시오.
당연히 나는 선원이 같은 선원이되는 두 개의 다른 행을 갖고 싶지 않습니다. 즉, 텍스트 파일을 탐색 할 때 선원이 데이터베이스에 이미 있는지 여부를 확인할 때마다 데이터베이스를 확인해야합니까?
해당 선원이 이미 데이터베이스에 있는지 확인하는 방법이 있습니까?엔티티 프레임 워크를 사용하여 데이터가 이미 데이터베이스에 있는지 확인하는 방법

var ids = db.Sailors.Select(x => x.Id).ToList(); 

그리고 그 객체에 대한 모든 사항을 확인하십시오 : 데이터베이스와 함께 당신은 모든 ID의 목록을 만들 수있는 모든 시간을 확인하지 않으려면

답변

0

하는 DbSet<Sailor> SailorsDbContext db 가정

var exists = ids.Contains(idFromFile); 
+0

LINQ를 사용하려는 경우 .FirstOrDefault (x => x.Id == idFromFile); – Loetn

+0

나는 그것이 필요하지 않을 것이라고 다소 희망을 품었지만, 나는 그것이 반드시 이런 방식이어야한다고 생각한다. 참고로, using (dbcontext db) 내부에 여러 개의 for-loops가있는 것이 나쁜 형식으로 간주됩니까? – user1815201

+0

@ user1815201 다릅니다. 그러나 EF 세트가 LINQ To Entities를 사용하여 더 잘 조작된다는 의미에서 'foreach'('for'만 제외하고)가 아니라는 점에서 가장 좋지 않습니다. 이는 LINQ가 만든 쿼리가 가능한 한 늦게 생성되고 평가되므로 루프 내에서 수동 페치보다 더 최적화됩니다. (물론, ToList()를 사용하여 예제에서 열거 형을 완전히 열거하기 때문에 특정 연산자에 대한 이점을 잃어 버린다는 점을 지적해야합니다.) –

관련 문제