Linq to sql LINQ和数据库权限

Linq to sql LINQ和数据库权限,linq-to-sql,permissions,Linq To Sql,Permissions,我仍在努力了解LINQ并访问SQL数据库 我一直被教导,您应该只对数据拥有存储过程的执行权限 您不应该选择/插入/更新/删除 (这是因为性能和安全性) 要从LINQ中获取数据,显然需要select权限。我知道你可以在LINQ中使用存储过程,但既然我不能做连接,那又有什么意义呢 我错过了什么吗???我们是程序员,不是DBA法西斯分子。如果您的需求声明数据库必须100%锁定,那么Linq不适合您。我不是DBA,所以我相信大多数性能/安全宣传就是这样。林克是给我的 2) 您可以使用linq进行连接 @

我仍在努力了解LINQ并访问SQL数据库

我一直被教导,您应该只对数据拥有存储过程的执行权限

您不应该选择/插入/更新/删除

(这是因为性能和安全性)

要从LINQ中获取数据,显然需要select权限。我知道你可以在LINQ中使用存储过程,但既然我不能做连接,那又有什么意义呢

我错过了什么吗???我们是程序员,不是DBA法西斯分子。如果您的需求声明数据库必须100%锁定,那么Linq不适合您。我不是DBA,所以我相信大多数性能/安全宣传就是这样。林克是给我的

2) 您可以使用linq进行连接


@Philippe:Linq自动将求值转换为查询参数,因此它提供了一些sql注入保护。但是,您仍然必须仔细评估您的需求,以确定您需要多少安全性以及在什么级别。Linq使处理数据库变得更容易,但它使安全设计更容易被搁置,这是一件坏事

我非常同意Jeff Atwood关于“存储过程与内联SQL/LINQ”问题的看法:

我很困惑,如果你在为所有人准备的狂欢节中,为什么你会想要表演一个连接;难道你不应该把这件事再闹一次吗


正如威尔所说,LINQ不是为你所说的那种DB使用而设计的;它的设计目的是为我们提供静态类型的内联SQL。但是,如果使用LINQ to SQL,您仍然可以通过用户权限控制访问。

出于安全原因,您不应该在查询中输入任何用户输入的数据。如果您坚持这个规则,我看不出拥有select权限有什么问题。

是否所有的数据库访问都是“隐藏”存储过程取决于应用程序和公司的需要。我已经实现了使用视图获取所有更新的所有数据和存储过程的系统。这允许集中的安全性和数据库逻辑,同时仍然允许前端开发人员在适当的地方使用SQL查询

就像编程中的许多其他事情一样,它取决于项目的需要

LinqToSql确实支持存储过程。Scott Gu在上面有一个帖子: