1

在我们的数据库中,所有表格都链接回单个表格。此表有一列位来限制是否显示记录。目前这些记录在网站的代码一侧被过滤。SQL Server 2008 EF 4 - 使用权限返回限制数据库记录?

是否有任何方法设置权限,以便userA永远不会看到数据库中的哪个公共位列设置为true的任何记录?

我们使用SQL Server 2008的

另外,我们还使用实体框架4.0 .NET 4的(在C#),如果你有任何想法如何它可能有实现的呢?

感谢您的反馈。

回答

0

根据this excellent TechNet article,如果使用视图或存储过程来限制当前用户的结果,相应地构建数据库,SQL服务器确实可以实现行级安全性。据我所知,SQL Server没有内置的行级锁定功能。

+0

感谢您的回复,我想答案是除了创建视图之外,真的没有办法处理它。 – Chuck 2011-02-24 19:02:01

+0

@Chuck当然没有内置的机制。就我个人而言,我会在应用程序中构建自己的权限处理。 – 2011-02-24 19:32:24

0

您可以在表格顶部定义视图,该视图仅显示那些“活动”列设置为1(true)的行。

然后,您可以撤销该组用户对基础表的SELECT权限,但是又会在您创建的新视图上授予他们SELECT

+0

我们考虑过这个,但是我们必须保留2个完整的独立实体集(1个使用视图,1个使用表或不同视图),所以我想我们将不得不探索更多的代码端选项。 – Chuck 2011-02-24 19:04:55