특정 시간에 특정 사용자가 사용할 수있는 항목을 쿼리하는 ServiceOperation이 있습니다. 는 한마디로이 메도가 수행합니다IQueryable을 반환하는 ServiceOperation에서 일부 엔터티를 조작 할 수 있습니까?
var fullResult = from i in Items where ... select i; //get ALL possible items where...,
이 항목을 반환 말할 수 있습니다 {A, B, C, D}. 두 번째 쿼리는 호출 사용자가 액세스 할 수있는 항목을 필터링합니다.
var clientResult = from ci in fullResult where (privilege's and schedule's are true)
이 진드기는 {A, C}가되어 반환됩니다. 클라이언트 측의 결과는 다음과 같습니다. 클라이언트가 액세스 할 수있는 항목 목록 만 표시됩니다. 검색에서 실수를했는지 알지 못하거나 현재 항목을 사용할 수 없기 때문에 성가신 일입니다.
나는 가능한 모든 결과를 클라이언트 {A, B, C, D}에 표시하지만이 경우 FLAG B 및 D는 사용할 수 없다고 표시합니다.
내 엔티티는 이미 내가 사용할 수있는 isReadOnly 속성이 있습니다.
필터를 걸지 않고 나머지 결과를 읽기 전용으로 표시하도록 쿼리를 작성할 수 있습니까? 이상적인 결과는 {A, B.isREadOnly = true, C, D.isReadOnly = true}입니다.
또는 수행 할 수있는 작업의 한계에 도달 했습니까? 아니면 기존 WCF 웹 메서드를 작성해야합니까? 결과의 목록을 반환하는 별도의 클래스?
PS :이 'isReadOnly의'속성 만이 사용됩니다, 나는 내가 있다면 그것은 어떤 포인터에 대한 모든
고맙습니다에서 DB에
안드레아스
오케이,이 경우에는 Followup Q가 있습니다. 내 모델 (엔티티 A (DB), AExtra (MyOwnEntity))에 내 DB 매핑 엔티티 외에도 확장 엔티티를 생성해야합니다. 이 질문을 새 형식으로 매핑하는 방법 그러나 저장 변경은 어떻게 처리합니까? 변경 차단기에서 마술을해야 할 것 같지만 변경 내용을 저장하려면 정확히 어떻게해야합니까? ? –
Andreas
예. 변경 작업을 수행 할 때 변경 내용 추적을 잃어 버리면 A를 업데이트해야합니다. 컨텍스트에서 다시 잡아서 AExtra에서 속성을 설정하고 저장해야합니다.컨텍스트가 아직 주변에 있다면 캐시 된 버전을 돌려 줄 수 있으므로 엔티티를 다시 가져오고 속성을 설정하는 것이 그렇게 비효율적이지는 않습니다. SQL 프로파일 러 또는 쿼리를보기 위해 뭔가를 시도해보십시오. 난 항상 그냥 엔티티 프레임 워크 백엔드와 함께 정기적으로 wcf 서비스를 사용했습니다 그래서 당신이 다르게 미안해 할 수있는 데이터 서비스의 방법이 있는지 말할 수 없다 – kmp
나는 그것을 시도하려고 줄거야, 그것은 것 같습니다 유일한 옵션입니다. 이 작업을 다른 ServiceOperation 호출로 종료하기 때문에이 경우에는 변경 내용 추적 진드기를 놓치지 않아도됩니다. 고맙습니다. – Andreas