linq와 entityquery 및 ria 서비스의 상호 작용에 대한 일반적인 질문이 있습니다. 내 domainconext 내 응용 프로그램에 대한 쿼리를 정의 할 수 있음을 알고 있습니다. 예를 들어, 내 도메인 컨텍스트 내에서 linq을 사용하여 다음 쿼리를 정의 할 수 있습니다.Linq, EntityQuery 및 RIA 서비스의 상호 작용 설명
public IQueryable<User> GetUsersFriends(Guid usersID)
{
return (from f in this.ObjectContext.Friends join u in this.ObjectContext.Users on f.FriendUsersID equals u.ID where f.UsersID.Equals(usersID) select u);
}
이 모든 것이 좋습니다. 하지만 내 질문은 클라이언트 측 (silverlight 앱)에서 동일한 유형의 쿼리를 수행 할 수 있습니까? 그래서 EntityQuery 객체에 대해 linq 문을 작성하고이 방식으로 데이터베이스에서 데이터를 리턴 할 수 있습니까?
이미이로드 된 엔티티 모음에서 linq 작업을 수행 할 수 있다는 것을 알고 있습니다. 클라이언트 측에서 linq을 사용하여 콜렉션을로드 할 수 있습니까?
궁극적으로 데이터베이스에 도달 한 모든 쿼리가 내 도메인 컨텍스트에 정의되어야한다고 생각합니까? 힘의 힘을 나는 새로운 쿼리를 정의하고 그것을 domaincontext.load() 작업에 전달하기 위해 linq를 사용하려고 노력하고있다 .... 비참하게 실패한다. domainconext는 아마 줄을 가로 지르는 쿼리를 마샬링 할 방법이 없을 것입니다 ... 맞습니까?
내 이해가 정확합니까? 누군가가 나를 위해 이것을 확인하는 데 도움이된다면, 나는 그것을 감사 할 것입니다.
당신에게 리처드 감사합니다. 이것은 나를 위해 약간 명확 해. 마지막으로 비슷한 일을 시도했을 때 즉시 이해가되지 않는 유형에 대한 오류 메시지가 나타났습니다. 귀하의 설명과 함께, 나는 그것이 내 문제를 해결했을 템플릿로드 (domaincontext.load)임을 이해합니다. 그러나 데이터베이스가 손상되는 방식을 제어하는 것이 중요하므로 지금 당장은 도메인 컨텍스트에 모든 것을 넣으십시오. 보안에 대한 귀하의 의견을 이해하지 못했습니다. 그것을 설명 할 수 있습니까? 단지 내 자신의 교화를 위해서. –
끝 점이 IQueryable로 노출되면 필터, 정렬 절 등을 사용하여 해당 엔터티에서 정보를 검색 할 수 있습니다. 사용자가 쿼리를 작성한 다음 해당 쿼리를 정보 검색을 위해 끝점에 전달할 수 있습니다. 이것은 추가 정보를 "포함"하거나 지연로드를 허용 할 때 더욱 위험 해집니다. 이 두 가지 모두 엔티티에서 시작하여 데이터 스키마로 이동하고 추가 정보를 검색 할 수 있음을 의미합니다. 이것은 IIS를 통해 공개되는 요지입니다. IIS가 공개이면 엔트리 포인트도 마찬가지입니다. 보안이 문제입니다. – codeputer