2011-05-07 6 views
0

DB에서 데이터를 메모리에 보관해야하는 애플리케이션이 있습니다. 행이 거의없는 5-6 개의 테이블이 있으며 테이블이 거의 업데이트되지 않으며 응용 프로그램에서이 데이터를 매우 자주 필요로하므로 모든 작업을 수행 할 때마다 DB를 요청하지 않으려합니다. Entity Framework 4 (엔티티에 linq)를 사용하고 있으며 쿼리 할 때마다 요청을 보냅니다. ToList를 사용하는 것을 피하는 것이 가능하다는 것을 알고 있습니다. 그렇지만이 6 개의 테이블에서 정보가 필요하고 쿼리가 조인을 적용합니다.EF를 사용하여 DB의 캐시 데이터 4

더 나은 해결책은 무엇입니까?

답변

1

쿼리의 목적이 실행됩니다. 문제가 해결되면 EF Caching Wrapper을 확인할 수는 있지만 그렇게 생각하지는 않습니다. 캐싱 프로 바이더는 실제 쿼리를 캐싱하므로 조건을 변경할 수 있으며 다른 쿼리로 간주됩니다.

이 작업은 데이터를 사용자 지정 데이터 구조 (목록)로로드하고 Linq-to-Object를 사용하여 수행해야합니다.

+0

다시 유일한 옵션은 ToList() 인 것 같습니다. – NDeveloper

0

캐싱 후보가 아닌 다른 데이터에 데이터를 조인하는 경우 데이터베이스 엔진 기능을 살펴볼 것을 권장합니다. 대부분의 고급 SQL 데이터베이스는 이러한 테이블을 이미 RAM에 배치합니다. 캐시되지 않은 데이터에 대한 쿼리를 실행할 때 이미 네트워크 대기 시간 오버 헤드가 발생합니다. 그리고 데이터베이스는 이미 이미 RAM에 인덱스를 가지고있을 것입니다. 이미지 나 그와 비슷한 큰 행에 대해 이야기하지 않는 한. 한 곳에서 다른 곳으로 소량의 프로세싱을 옮기면됩니다. 또한 SQL 데이터베이스만큼 효율적이기 위해서는 캐시 방법을 찾아야 할뿐만 아니라 인덱스를 캐시하고 인덱스를 사용하고 코드를 작성 및 유지 관리해야합니다.

그래도 사용 사례에 따라 매우 유용 할 것입니다.

관련 문제