2011-06-22 107 views
1

我已经使用实体框架完成了一项工作。但是,我的经理要求我改用存储过程。他表示,目前,该公司的数据库安全结构是建立在数据库角色之上的。我可以执行实体框架查询作为数据库角色吗?

例如,我们有一个角色A,其中包括将访问数据库的AD用户,并且角色A仅被赋予执行权限以关联存储过程。如果我使用实体框架,查询将作为实际用户而不是数据库角色运行,因此这些用户可能直接连接到数据库并对其执行操作。

我对数据库安全性不太了解。任何人都可以解释我的经理说的是否有效?

如果是这样,有什么解决办法,这样我仍然可以使用实体框架,而不是打破了公司的数据库安全结构?(即利用角色来执行查询,而不是实际的AD用户)

回答

2

数据库角色数据库级别的对象。用于运行应用程序的用户帐户必须首先登录到服务器。然后根据数据库用户或数据库角色评估此帐户的权限。如果你的应用程序账户是roleA的成员,它应该有权限“访问数据库”,但是如果访问意味着只有roleA的成员可以执行SP,那么你可以忘记任何linq或ESQL查询,因为数据库安全性根本不允许你调用他们(它会引发安全异常)。

在这种情况下,EF的唯一优势是将SP的结果集自动映射到实体/复杂类型/自定义类型。不能使用LINQ-to-entities,只能通过映射的存储过程修改实体。

+0

谢谢。请你指点一些解释如何“自动将SP结果集映射到实体”的东西?我做了一个快速搜索,找不到任何相关的东西。 – StarCub

+0

它在函数导入中完成:http://msdn.microsoft.com/en-us/library/cc716672.aspx –

相关问题