내 asp.net mvc 2 응용 프로그램에서 오히려 데이터 - 무거운 작업이 있습니다. 리포지토리 패턴을 사용하는 동안 쿼리에 linq-to-sql을 사용하고 있습니다. SQL Server 프로파일 러에서 작업 실행을 검사 할 때 약 60 개의 쿼리가 실행되고 있음을 발견했습니다. 내 질문은 - 그리고 거기에 충분한 정보가 질문에 대답하기를 바랍니다 - asp.net mvc, 전후방, 네 번째, 데이터베이스, 각 쿼리에 대한 전체 왕복을 만들거나 그것은 linq의 사용, 실제로 단 한 왕복은 무엇입니까?LINQ-to-SQL - 데이터베이스에 언제 액세스합니까?
답변
귀하의 Linq가 어떻게 생겼는지에 따라 다릅니다. 결과 집합이 열거 될 때 데이터베이스에 도달한다는 것이 내 이해입니다.
LINQ 쿼리 또는 원시 SQL 이건간에 쿼리 당 왕복 1 회라고 생각합니다. 나는 그것이 "각각의 모든 쿼리"가 의미하는 바에 달려 있다고 생각합니다.
위의 의견에 응답하려면 :
var에 결과 = LINQ를; < --- 쿼리가 발생하지만,
foreach는 (결과에 YourDataType의 YDT) 실행되지 않습니다
만약 당신의 대답이 내가 할 수 있다면 ... 당신의 대답은 내가했던 재검사와 일치한다. 나는 나의 행동에 브레이크 포인트를 넣고 동시에 프로파일 러를 점검하고 실제 선택이 실제로 실행되었음을 보여 주었다. 쿼리 결과를 사용하는 지점에서만 그러나 왕복 여행까지, 나는 그것이 내가 그 행동에 가지고있는만큼 많은 선택을 할 때 받아 들일 수없는 각각의 모든 선택을위한 완전한 왕복 여행을 할 것이라고 생각한다. – user560498
나는 그를지지했다. 컬렉션의 결과에 액세스하면 열거됩니다. –
어쨌든, 이것은 너무 늦었을 수도 있지만 데이터베이스에 대한 여러 번의 왕복과 비슷한 문제가있었습니다. 이것 좀 봐 : http://stackoverflow.com/questions/4822284/more-efficient-linq-query –
- 1. LinqToSql Entity Id는 언제 할당됩니까?
- 2. WF4에서 데이터베이스에 어떻게 액세스합니까?
- 3. Clojure에서 SQLite 데이터베이스에 어떻게 액세스합니까?
- 4. 언제 이미지를 데이터베이스에 저장해야합니까?
- 5. 언제 데이터베이스에 인덱스를 적용해야합니까?
- 6. LinqToSql 쿼리
- 7. lib/tasks의 태스크에서 레일즈 데이터베이스에 어떻게 액세스합니까?
- 8. 강제로 LinqToSql 제출
- 9. LinqToSql InvalidCastException
- 10. 데이터베이스에 파생 데이터를 저장할 때 언제 좋습니까?
- 11. IBOutlet 속성 대신에 viewWithTag를 사용하여 언제 IB 객체에 액세스하고 액세스합니까?
- 12. LinqToSQL 데이터베이스 업데이트 중
- 13. 흥미로운 LinqToSql 동작
- 14. LinqToSql 및 WCF
- 15. LinqToSQL + 페이징 + 동적 정렬?
- 16. LinqToSQL _conn? LinqToSQLConnection?
- 17. 문제가 쿼리 LinqToSql
- 18. linqtosql 객체 매핑
- 19. LinqToSql 테이블을 리피터에 바인딩
- 20. ASP.NET + 임베디드 데이터베이스 + LinqToSQL
- 21. 여러 LinqToSql DataContext가있는 StructureMap
- 22. LinqToSQL DateTime 필터?
- 23. LinqToSql 베스트 프랙티스
- 24. LINQtoSQL : 맵 파일은 무엇입니까?
- 25. LinqtoSQL - 지움 후 삽입
- 26. LinqtoSQL - 매핑 문제 : 유형
- 27. LinqtoSQL 및 문제
- 28. LinqToSql to LinqToXML - 차이점
- 29. LinqToSql MVC3 업데이트
- 30. 제출 된 django 폼은 실제로 언제 데이터베이스에 저장됩니까?
{<을 --- 쿼리는 결과
...
으로 뭔가를 할 때 실행} 고맙겠지 만 명확히 할 수 있겠습니까? "결과 집합이 열거 될 때"는 무엇을 의미합니까? - 쿼리가 IQueryable 또는 IEnumerable과 같은 것을 반환 할 때 말하기를 원하십니까? – user560498
열거는 Chris가 아래에서 말한대로 결과에 액세스하는 것을 의미합니다. 콜렉션 또는 IQueryable 위로 마우스를 가져 가면 디버거를 사용하고 결과 새로 고침 아이콘을 클릭하는 것과 비슷합니다. 결과는 게으른로드됩니다. 당신은 카운트와 같은 것들에 접근 할 수 있지만 결과를 어딘가에 사용할 때까지 데이터베이스에 도달하지 않습니다. 따라서 열거합니다. –