단위 테스트 Entity Framework의 쿼리 논리를 원한다면 쉬운 조롱을 위해 표현식 트리를 작성하기 전에 DbSet<T>
을 IQueryable<T>
으로 변환하는 것이 좋습니다. 이것은 "안전한"것이고 그것에 대해 알아야 할 것이 있습니까?DbSet <T>을 "안전"이라고 AsQueryable로 호출하고 있습니까?
5
A
답변
7
그것은 안전하고 합법적이며 완전히 표준입니다. OO가하는 일입니다. 너는 방금 전진했다. A DbSet
HAS는 디자이너가 정의한 계약에 따라 IQUeryable
이되어야합니다.
4
AsQueryable()
에주의하십시오. 변수 중 하나가 AsQueryable()
을 호출 한 후에 IQueryable<IEntity>
유형 인 경우 더 구체적인 변수 유형이 (예제에서는 DbSet<IEntity>
)인지 여부를 모르는 경우 입니다.
OOP의 관점에서 볼 때이 완벽하게 유효합니다 (인터페이스의 전체 지점입니다!), 많은 버그/실수를 유발할 수 있습니다. 소스 DbSet<IEntity>
을 열거 할 때까지는 실제로 쿼리를 실행하지 않습니다. 그래서 예를 들어 당신이 가입 할 수없는 것
메모리 내 .Union(...)
를 사용하여 DbSet<IEntity>
의 결과 (예를 new List<IEntity>{ ... }.AsQueryable()
에 대한) IQueryable<IEntity>
...
관련 문제
- 1. EF 4.1에서 DBSet <Something> 대신 DBSet <ISomething>을 사용할 수 있습니까?
- 2. DbSet <T>을 Entity Framework에서 동적으로 만드시겠습니까?
- 3. Kerberos TGT 동작
- 4. CAS : TGT 복호화
- 5. DbSet <>. SaveChanges가 호출되도록 추가합니다. 왜?
- 6. 문자열에서 DbSet <MyTable> 받기
- 7. DbSet 상황
- 8. DbSet <>으로 페이징 로컬
- 9. 왜 DbSet <T> 데이터베이스
- 10. ASP.NET 쿼리 제네릭 DBSet <T>
- 11. 마이그레이션 : DbSet <T> .AddOrUpdate 문제
- 12. 내가 EF 4.0에서 <code>ObjectSet</code>을 사용하는 데 사용 DbSet
- 13. EF-CodeFirst에 DbSet <string>과 같은 DbSet 유형의 문자열을 사용하십시오.
- 14. edmx에서 DBSet 속성 사용
- 15. MVC4 API 컨트롤러에서 Asberyable <EntityBase>을 DbSet <Entity>으로 어떻게 반환 할 수 있습니까?
- 16. EDMX은 ICollection은 DBSet 대
- 17. 무엇이 호출하고 있습니까?
- 18. 엔티티 프레임 워크 DbSet 리플렉션
- 19. DbSet DbContext 클래스의 외부
- 20. setMnemonic()을 호출하고 키를 눌러 메소드를 호출하십시오.
- 21. DbSet을 포함하는 DbSet 그룹
- 22. DbSet 및 DbContext 정보
- 23. Ember에서 App.store.commit()을 너무 빠르게 호출하고 있습니다.
- 24. Django 템플릿의 메소드를 호출하고 return (,,)을 사용하십시오.
- 25. void setup()을 두 번 호출하고 처리해야합니다.
- 26. DbSet <T>을 컴파일 타임에 해당 하위 유형을 모른 채 개체로 저장하는 방법?
- 27. .Set() 대신 .Set()을 사용하여 형식 기반 DbSet 선택 <T>()
- 28. 캐스트 DbSet <T> 및 호출 메서드
- 29. 단순 DbSet <TEntity>.Find() Forex Taking 호출
- 30. CAS 서버 TGT 쿠키를 어떻게 보호해야합니까?
5.0 문서에 http보고, 내리 뜬에 관하여 : // msdn.microsoft.com/en-us/library/system.data.entity.dbset(v=vs.103).aspx (6.0 버전을 찾을 수 없음), DbSet은 IQueryable에서 상속하지 않는 것 같습니다. 나에게 조금 비린내 같다. – Dante
@JohnNevermore 일반 버전을보십시오. http://msdn.microsoft.com/en-us/library/gg696460(v=vs.103).aspx – ken2k
바보 같이, 완전히 놓쳤습니다. 감사. – Dante