2008-09-08 3 views
2

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

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

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

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

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

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

ответ

2

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

2) Вы можете делать соединения с linq.

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

0

Я очень согласен с Джеффом Этвудом в выпуске «Сохраненные процедуры против встроенного SQL/LINQ»: Who Needs Stored Procedures, Anyways?.

Я смущен относительно того, почему вы даже хотите выполнить JOIN, если вы находитесь в толпе SPROCs-for-all; Разве вы не должны обертывать этот JOIN в другой SPROC?

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

0

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

1

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

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

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

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

Смежные вопросы