LINQ и разрешения базы данных - PullRequest
2 голосов
/ 08 сентября 2008

Я все еще пытаюсь разобраться в LINQ и получить доступ к базе данных SQL.

Меня всегда учили, что у вас должны быть только разрешения на выполнение хранимых процедур для ваших данных.

Вы никогда не должны выбирать / вставлять / обновлять / удалять.

(Это из-за производительности и безопасности)

Чтобы получить данные из LINQ, вам, очевидно, нужно выбрать права доступа. Я знаю, что вы можете использовать хранимые процы с LINQ, но так как я не могу делать объединения, какой смысл?

Я что-то пропустил ???

Ответы [ 4 ]

2 голосов
/ 08 сентября 2008

1) Мы программисты, а не фашисты DBA. Если ваши требования указывают, что база данных должна быть заблокирована на 100%, Linq не для вас. Я не администратор баз данных, поэтому я считаю, что большая часть обмана производительности / безопасности именно это. Linq для меня.

2) Объединения можно выполнять с помощью linq.

@ Philippe : Linq автоматически преобразует оценки в параметры запроса, поэтому обеспечивает некоторую защиту от внедрения SQL. Тем не менее, вы все равно должны тщательно оценить ваши требования, чтобы определить, какой уровень безопасности вам нужен и на каком уровне. Linq значительно облегчает работу с базой данных, но облегчает откладывание защищенного дизайна на задний план, что плохо.

0 голосов
/ 08 сентября 2008

Зависит ли весь доступ к вашей базе данных от хранимых процедур, зависит от потребностей приложения и компании. Я реализовал системы, которые используют представления для получения всех данных и хранимые процедуры для всех обновлений. Это учитывает централизованную безопасность и логику базы данных, в то же время позволяя внешним разработчикам использовать SQL-запросы, где это уместно.

Как и многие другие вещи в программировании - это зависит от потребностей вашего проекта.

LinqToSql поддерживает хранимые процедуры. У Скотта Гу есть пост:

http://weblogs.asp.net/scottgu/archive/2007/08/16/linq-to-sql-part-6-retrieving-data-using-stored-procedures.aspx

0 голосов
/ 08 сентября 2008

Что ж, из соображений безопасности не следует вводить введенные пользователем данные в запросы. Если вы придерживаетесь этого правила, я не вижу проблемы с разрешением выбора.

0 голосов
/ 08 сентября 2008

Я очень согласен с Джеффом Этвудом в вопросе «Хранимые процедуры против встроенного SQL / LINQ»: Кому нужны хранимые процедуры? .

Я не совсем понимаю, почему вы даже захотите выполнить JOIN, если вы в группе SPROC для всех; разве вы не должны обернуть этот JOIN в другой SPROC?

Как сказал Уилл, LINQ не был разработан для того типа использования БД, о котором вы говорите; это было разработано, чтобы дать нам статически типизированный встроенный SQL. Однако вы могли бы по-прежнему контролировать доступ через пользовательские разрешения, если используете LINQ to SQL.

...