如何根据 SQL 服务器中的用户角色调整 WPF 应用程序?

How to adapt WPF application according to user role in SQL Server?

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

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

是的,AppUsers 成员无权编辑一个 table 让我们称之为 T,只能从中获取 select 数据。 但是,AppAdmins 成员也可以向 table T 中插入和更新数据。

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

如何获取当前用户角色?

EDMX 文件或 Entity Framework 文件中是否有一些我可以用来获取用户角色的 API 文件?

我可以用 LINQ 命令获取吗?

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

是的,您应该编写一个 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