База данных уровня и каждая отдельная таблица имеют DataSetId, и я абсолютно уверен, что данные всегда правильно разделены.
В настоящее время я использую атрибут QueryInterceptor, но он грязный, чрезмерно повторяющийся и подвержен ошибкам. Некоторые новые Dev могут добавить новую таблицу и забыть отфильтровать по DataSetId или просто переименовать таблицу. Поэтому я поместил это в базовый класс, но свойства IQuerable моего хранилища никогда не вызываются.
У меня есть класс «CoreRepository», который наследуется от ObjectContext, и каждая из моих коллекций IQueryable использует «CoreObjectSet». CoreObjectSet расширяет ObjectSet, всегда добавляя выражение для фильтрации по DataSetId. При прямом использовании это работает нормально. Но при использовании для DataService средство доступа Get для коллекций в репозитории никогда не вызывается DataService. Кажется, что они обманывают, вообще не используют их и получают прямой доступ к данным.
Есть ли способ заставить DataService получить доступ через класс репозитория правильно (И все же получить эффективность передачи запроса в виде SQL)?
Если это поведение, зачем вообще делать DataService из T, если он даже не собирается использовать класс? Для команды ADO просто проигнорировать это и использовать edmx напрямую кажется хаком.
Спасибо
Аарон