2013-01-04 1 views

답변

7

그것은 안전하고 합법적이며 완전히 표준입니다. OO가하는 일입니다. 너는 방금 전진했다. A DbSet HAS는 디자이너가 정의한 계약에 따라 IQUeryable이되어야합니다.

+0

5.0 문서에 http보고, 내리 뜬에 관하여 : // msdn.microsoft.com/en-us/library/system.data.entity.dbset(v=vs.103).aspx (6.0 버전을 찾을 수 없음), DbSet은 IQueryable에서 상속하지 않는 것 같습니다. 나에게 조금 비린내 같다. – Dante

+3

@JohnNevermore 일반 버전을보십시오. http://msdn.microsoft.com/en-us/library/gg696460(v=vs.103).aspx – ken2k

+2

바보 같이, 완전히 놓쳤습니다. 감사. – Dante

4

AsQueryable()에주의하십시오. 변수 중 하나가 AsQueryable()을 호출 한 후에 IQueryable<IEntity> 유형 인 경우 더 구체적인 변수 유형이 (예제에서는 DbSet<IEntity>)인지 여부를 모르는 경우 입니다.

OOP의 관점에서 볼 때이 완벽하게 유효합니다 (인터페이스의 전체 지점입니다!), 많은 버그/실수를 유발할 수 있습니다. 소스 DbSet<IEntity>을 열거 할 때까지는 실제로 쿼리를 실행하지 않습니다. 그래서 예를 들어 당신이 가입 할 수없는 것

메모리 내 .Union(...)를 사용하여 DbSet<IEntity>의 결과 (예를 new List<IEntity>{ ... }.AsQueryable()에 대한) IQueryable<IEntity> ...

관련 문제