그래서 여기 내 상황이 있습니다 : 우리가 수정할 수없는 공급 업체 DB와 공급 업체 응용 프로그램에서 데이터를 가져 와서 작동하는 사용자 지정 데이터베이스가 있습니다. 레코드를 공급 업체 응용 프로그램에서 가져 오면 가져올 레코드 목록에 나타나지 않습니다. 또한 가져 오지 않은 가장 최근의 250 개의 레코드 만 표시하기를 원합니다.LINQ2SQL을 사용하여 교차 db 쿼리에서 많은 수의 레코드를 제외 할 수 있습니까?
처음 시작한 항목은 사용자 지정 db에서 가져온 ID 목록을 선택한 다음 .ids (. =! idList.Contains (x))의 ID 목록을 사용하여 공급 업체 db를 쿼리하는 것입니다. .Id)) 절을 사용합니다.
2100은 SQL에 전달할 수있는 매개 변수 수의 제한이므로 2100 개의 레코드를 사용자 정의 db로 가져올 때까지 작업이 완료되었습니다. 이것이 실제로 문제가 아니라 '잘못된 버퍼'/ '심각한 오류'가 아니라는 것을 알게 된 후 ADO.Net에서보고 한 바에 따르면 내 솔루션은 원격 쿼리의 첫 번째 2000 ID를 제거한 다음 로컬 쿼리의 나머지 레코드를 제거하는 것이 었습니다.
수많은 관련성이없는 레코드를 가져와 그냥 제외 시키면 정확한 250 레코드를 얻을 수 있습니다. 매우 유쾌하지 않은 것 같습니다. 이 작업을 수행하는 더 좋은 방법이 있습니까? DB 저장 프로 시저를 수행하지 않아도됩니까?
미리 감사드립니다.
오른쪽, 아마도 가장 쉬운 방법 일 수 있지만 낭비입니다. 내 사건은 지금 당장 20,000 건이지만이 숫자는 날마다 늘어난다. 아마 당신이 몇 백 k 레코드를 치기 전까지는 큰 문제가 아니 겠지만, 벤더 데이터베이스가 벤더 애플리케이션에 의해 지속적으로 사용되고 있는지 확신 할 수 없으며, 매일 사용을 시뮬레이트하는 좋은 방법이 없습니다. – tap
또한 키를 데이터베이스의 테이블로 가져 와서 거기에서 조인 할 수 있습니다. 요청시 또는 주기적으로. – Robaticus