如何根据 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
我正在使用 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