2014-02-20 2 views
11

Entity Framework 4.0을 사용하여 전체 테이블을 메모리에로드해야합니다. 트릭을해야하는 AsNoTracking() 메소드에 대해 읽은 지난 2 시간을 보냈지 만, 왜 내 dataContext에서 메소드를 사용할 수 없는지 알 수 없습니다. 읽은 모든 내용을 기반으로 System.Data.Entity에 대한 참조 만 있으면됩니다. 그런 다음, 내 개체를로드 할 때 AsNoTracking() 메서드를 사용할 수 있어야합니다. 나는 여기서 간단한 것을 놓치고 있습니까? EF 4.0에서는이 방법을 사용할 수 없습니까? 그럼에도 불구하고 아래 코드 중 하나가 쿼리입니다.Entity Framework의 컨텍스트에서 AsNoTracking() 메서드가 누락되었습니다.

// Working Query 
var items = dbContext.Items.ToList() 

// Does NOT Work (Compiler does not recognize AsNoTrackingMethod()) 
var items = dbContext.Items.AsNoTracking().ToList() 
+0

System.Data.Entity가 참조 내가 엔티티 프레임 워크 4.0을 사용하고 있습니다. 발생한 문서는이 방법을 지원하기 시작한 버전이 명확하지 않으므로 아마도 버전 문제 일 수 있습니다. – Grasshopper

답변

6

AsNoTracking()은 (캐시되지 않은 결과를 반환하는 기능 등) 엔티티 프레임 워크 4.1 첨가 확장 방법이다. 따라서 Entity Framework 4.0에서는이 기능을 사용할 수 없습니다. 가능하다면 (BTW 현재 버전은 6.0입니다.) Entity Framework의 버전을 업그레이드 할 것을 제안합니다.

+1

[EF 4.1 Part 11에서 DbContext 사용] (http://blogs.msdn.com/b/adonet/archive/2011/02/05/using-dbcontext-in-ef-feature-ctp5-part-11 -load-and-asnotracking.aspx), AsNoTracking()은 EF 4.1에서 사용할 수 있습니다. 어느 쪽이 4.0보다 새로운 것인가, OP에서는 사용할 수 없지만 EF5에서는 추가되지 않는 것 같습니다. – hvd

+0

@hvd strange, MSDN에는이 방법에 대한 EF 5 버전 설명서 만 있습니다. –

+0

Thanks Sergey. 우리가 업데이트 할 수 있는지 알게 될거야. 그리고, SO가 허락하자마자 나는 당신의 대답을 받아 들일 것입니다. – Grasshopper

9

AsNoTracking()은 System.Data.Entity 네임 스페이스의 일부인 DbExtensions (EF5)/QueryableExtensions (EF6) 클래스의 확장 메서드입니다. Entity Framework 4.1 이상에서는 누락되지 않습니다. 해당 네임 스페이스에 대한 using 지시문을 추가하는 것을 기억하면됩니다.

using System.Data.Entity; 
+0

감사! 이것은 도움이되었습니다. –

+0

고맙습니다. :) – smoothumut

0

.NET 코어에서 EF를 사용하는 지시어를 사용하는 경우 :

using Microsoft.EntityFrameworkCore;