Я использую службы данных ado.net и хочу реализовать защиту на уровне строк в перехватчике запросов, чтобы ограничить данные только возвратом данных, которые пользователь может видеть.
Сложность заключается в том, что имя пользователя для пользователя находится в другой таблице. Поэтому я подумал, что могу получить список событий, которые пользователь может видеть в соответствии с записью в таблице OnlineSubscription для этого пользователя, а затем вернуть, соответствует ли текущее событие каким-либо записям, которые возвращаются следующим образом:
[QueryInterceptor("Events")]
public Expression<Func<Events, bool>> QueryEvents()
{
var allowedEventList = (from os in context.OnlineSubscription
from e in os.Events
where os.UserName == HttpContext.Current.User.Identity.Name
select e;
return e => events.Intersect(new List<Events>
{
e
}).Any();
}
Однако это вызывает исключение «Не реализовано». Итак, мой вопрос: есть ли правильный способ сравнить текущую сущность со списком сущностей в перехватчике запросов?
РЕДАКТИРОВАТЬ: Я также пытался:
return e => events.Any(evnt => evnt.Event_Key == e.Event_Key);
безуспешно (снова получая исключение «Не реализовано»).