나는 query interceptors에 대해 읽었습니다. 나는 인터셉터 대신에 필터와 더 비슷하기 때문에 실망했다. 즉, 레코드를 포함하거나 포함하지 않을 수 있습니다. 예를 들어 레코드를 수정할 수 없습니다. 내가 대신 작업을 만들 경우 어떻게쿼리 인터셉터 대신 작업 (WCF 데이터 서비스)
[QueryInterceptor("Users")] // apply to table users
public Expression<Func<User, bool>> UsersOnRead()
{
return cust => cust.IsDeleted == false;
}
: 나는 다음과 같은 일을 할 수있는 나의 실체 Users
에 대한 쿼리 인터셉터를 만들려면
는참고 조작 이름을 가질 것이 매우 중요합니다 그냥 엔티티 이름 LIKE 그렇지 않으면 쿼리 인터셉터 대신이 방법을 배치
[WebGet]
public IEnumerable<User> Users()
{
return this.CurrentDataSource.Users.Where(x=>x.IsDeleted==false);
}
작동하지 않습니다 나의 서비스 behav한다 정확히 똑같습니다. 게다가 나는 더 많은 힘을 가지고있다! 이 접근법을 더 나은 해결책으로 삼고 있습니까?
매우 흥미로운 일입니다. 엔티티에 대한 업데이트가 작동합니까? 아니면 WebGet이 엔티티에 대한 업데이트를 덮어 씁니까? 또한 쿼리 옵션을 지원하려면 IEnumerable 대신 IQueryable을 노출해야합니다. 저는 WCF 팀이이 상황을 생각하지 않았다고 생각합니다. 그래서 어떤 문제가 생기면 스스로 할 수 있습니다. – CharlesNRice
참조를 업데이트하려면 해당 작업의 주석 처리를 제거해야합니다. 일단 클라이언트 응용 프로그램에 서비스 참조를 추가하면 해당 작업의 주석을 제거 할 수 있으며 잘 작동합니다. –