Я хочу сделать простой (или нет) контроль доступа к данным в Entity Framework. Я видел, что его не так легко поддерживать в EF, потому что EF фактически не имеет хорошей поддержки схем и представлений.контроль доступа к данным в инфраструктуре сущности
Я хочу сделать условный доступ к некоторым столбцам сущности.
В Sql Server это легко достичь с помощью схем. Например, я могу создать представление для пользователя в своей схеме, где некоторые столбцы пропущены. Другой пользователь (например, admin) будет иметь все столбцы в своей схеме. Оба они могут иметь одно и то же имя представления, например: getUsers, но только администратор, который выполнит его из схемы dbo (dbo.getUsers), будет иметь все столбцы, а остальные только некоторые. Конечно, на Sql Server это может быть также достигнуто с помощью хранимых процедур.
Как достичь этой функциональности доступа к данным в EF?
Я хочу сделать функцию, которую я буду в состоянии использовать так:
-- function checks user role and returns appropirate columns/entity
var result = getAppropirateDataForThisUser("getUsers", user);
Конечно, это только для иллюстрации проблемы. Использование может быть совершенно иным.
Это может быть очень тяжелая работа с этим, когда у меня есть много объектов/представлений/процедур. Разве нет более простого решения? Реализация методов для каждого объекта может быть плохой идеей. Я предпочел бы фильтровать столбцы на сайте БД с помощью хранимой процедуры или представления ... – nosbor
В таком случае .. да. Я думаю, вам нужно это в стороне базы данных. –
Хорошо, но как я могу справиться с этим в EF? Я попытался сделать это с помощью db.ExecuteStoreQuery (@ "выполнить" + схему + "." + ProcName); но когда я выполняю процедуру из схемы, где я получил меньше столбцов, тогда EF исключает исключение, что для этого приведения недостаточно столбцов ... –
nosbor