Pergunta

Eu ainda estou tentando colocar minha cabeça em torno do LINQ e acessar um Banco de dados SQL.

Eu sempre fui ensinada que você só deve ter permissões de execução de procedimentos armazenados para seus dados.

Você nunca deve ter select / insert / update / delete.

(Isso é porque de desempenho e de segurança)

Para obter dados de LINQ, obviamente, você precisa de permissões.Eu sei que você pode usar procedimentos armazenados com o LINQ, mas desde que eu não posso fazer associações qual é o ponto?

Eu perdi alguma coisa???

Foi útil?

Solução

1) Nós somos programadores, não DBA fascistas.Se o seu estado de requisitos que o banco de dados deve ser bloqueada 100%, Linq não é para você.Eu não sou um DBA, então eu acredito que a maior parte da performance/segurança hype é só isso.O Linq é para mim.

2) Você pode fazer associações com o linq.

@Filipe:Linq transforma automaticamente avaliações em parâmetros de consulta, de modo que ele fornece algumas injeção de sql proteção.No entanto, você ainda tem que avaliar de perto suas necessidades, para determinar o quanto a segurança que você precisa e em que níveis.Linq faz lidar com o banco de dados muito mais fácil, mas torna-se mais fácil colocar problemas de segurança de design na parte de trás do queimador, que é uma coisa ruim.

Outras dicas

Bem, por motivos de segurança, você não deve entrada de qualquer usuário inserir dados em consultas.Se você ficar com esta regra, não estou a ver o problema de ter permissão de select.

Se todo o acesso ao banco de dados está "atrás" procedimentos armazenados depende das necessidades da aplicação e a empresa.Eu tenho implementado sistemas que utilizam pontos de vista para obter todos os dados e procedimentos armazenados para todas as atualizações.Isso permite a segurança centralizada e lógica de banco de dados, enquanto ainda permitindo o front-end developers usar consultas SQL, onde apropriado.

Como tantas outras coisas na programação - isso depende das necessidades do seu projeto.

LinqToSql dá suporte a procedimentos armazenados.Scott Gu tem um post sobre ela:

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

Eu estou muito de acordo com Jeff Atwood sobre os "Procedimentos Armazenados vs.Inline SQL/LINQ" problema: Quem Precisa De Procedimentos Armazenados, De Qualquer Maneira?.

Estou confuso por que você mesmo deseja realizar uma ASSOCIAÇÃO, se você está no SPROCs-para-tudo multidão;não deveria envolver em que INGRESSAR em outro SPROC?

Como disse, LINQ não foi projetado para o tipo de banco de dados use o que você está falando;ele foi projetado para dar-nos estaticamente tipadas inline SQL.Você pode, no entanto, ainda controlar o acesso através de permissões de usuário se você usar o LINQ para SQL.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top