SQL에 대한 일부 LINQ를 구현하려고하지만 고객 a와 같은 액세스 제어 비즈니스 규칙을 추가하는 방법에 대해 고심하고 있습니다. ado.net 데이터 서비스에서 , 쿼리 intercptors 정확히 내가 후에 오전 및 갱신/삽입/삭제를 확인하는 방법을 볼 수 있지만이이 동등한 무엇 않습니다linq to sql query interceptor
[QueryInterceptor("Orders")]
public IQueryable<Orders> OnQueryOrders(IQueryable<Orders> orderQuery)
{
return from o in orderQuery
where o.Customers.ContactName == HttpContext.Current.User.Identity.Name
select o;
}
또는 줘야 내가 필요 GetOrdersByCustomer (string customerId)
개인적으로 GetOrdersByCustomer와 같은 것을 훨씬 쉽게 이해하고 유지할 수 있습니다. 인터셉터는 여기서 불필요한 복잡성을 느끼고 있습니다. 자신의 코드를 유지해야 할 사람과 자신만큼 영리하지 않은 사람을 생각해보십시오. –
단순한 시나리오에서는 괜찮을 지 모르지만 훨씬 더 풍부한 쿼리 작성을 허용하여 매우 빠르게 100 명의 접근자를 상대로 끝내고 유지 보수 또는 리팩토링에 혼란 스럽거나 오류가 발생할 수 있습니다. 인터셉터는 혼란 스러울 수 있지만 키 코드 문제가 일관성있게 실행되도록 허용합니다.하지만 저스틴의 생각은 우리가 끝낼 것에 더 가깝다고 생각합니다. – steve