Конечно, вы можете сделать это. Важная вещь, которую нужно сделать, - это заблокировать прямой доступ к контексту объекта (не позволяя пользователям создавать свои собственные ObjectQuery) и вместо этого дать клиенту более узкий шлюз для доступа и изменения объектов. Мы делаем это с помощью шаблона Entity Repository . Вы можете найти пример реализации этого шаблона для структуры сущностей в этом блоге . Опять же, ключ блокирует доступ к контексту объекта. Обратите внимание, что класс контекста объекта является частичным. Таким образом, вы должны быть в состоянии предотвратить «несанкционированные» способы его создания, а именно, вне вашей сборки репозитория.
Однако, есть тонкости, которые необходимо учитывать. Если вы реализуете защиту представления на уровне строк для определенного типа сущности через шаблон хранилища, то вы должны рассмотреть другие способы, с помощью которых клиент мог бы получить доступ к тем же сущностям. Например, через навигационные отношения. Возможно, вам придется сделать некоторые из этих отношений частными, что вы можете сделать в своей модели. У вас также есть возможность , указав пользовательский запрос или хранимую процедуру для загрузки / сохранения объектов. Хранимые процедуры, как правило, зависят от сервера БД, но SQL можно написать в общем виде.
Хотя я не согласен с тем, что это невозможно сделать с помощью Entity Framework, я согласен с комментариями «сделай это на сервере БД», поскольку вам необходимо реализовать глубокую защиту .