首页 > 解决方案 > 如何根据 SQL Server 中的用户角色调整 WPF 应用程序?

问题描述

我正在构建一个使用 C# 和 EDMX 文件作为数据访问层的 WPF 应用程序。

我在 SQL Server 2008 中有两个安全角色,AppUsers 和 AppAdmins。

是的,AppUsers 成员没有权限编辑一张表让我们称之为 T,只能从中选择数据。但是,AppAdmins 成员也可以在此表 T 中插入和更新数据。

我在 C# 中使用 try/catch 块在状态栏中报告错误,但我想根据用户角色从我的应用程序中关闭完整的模块,而不是等待用户使用我的应用程序并报告技术上不正确的错误一个错误,是 SQL 权限障碍。

如何获取当前用户角色?

EDMX 文件或实体框架文件中是否有一些 API 可用于获取用户角色?

我可以用 LINQ 命令得到它吗?

或者我应该开发 SQL 字符串查询并直接在数据库服务器上运行它?

标签: c#entity-frameworklinqsql-server-2008user-roles

解决方案


是的,您应该编写一个 SQL 查询来检索角色成员资格。EF 不会为您执行此操作。

就像是:

select name RoleName, is_member(name) IsUserInRole
from sys.database_principals
where type = 'R'

或者

select is_member('AppUsers') IsAppUser, is_member('AppAdmins') IsAppAdmin

推荐阅读