Domanda

Sto ancora cercando di capire LINQ e di accedere a un database SQL.

Mi è sempre stato insegnato che dovresti avere solo le autorizzazioni di esecuzione delle procedure memorizzate sui tuoi dati.

Non dovresti mai selezionare/inserire/aggiornare/eliminare.

(Ciò è dovuto alle prestazioni e alla sicurezza)

Per estrarre i dati da LINQ è ovviamente necessario selezionare le autorizzazioni.So che puoi utilizzare i processi memorizzati con LINQ, ma dal momento che non posso eseguire join, qual è il punto?

Mi sono perso qualcosa???

È stato utile?

Soluzione

1) Siamo programmatori, non fascisti DBA.Se i tuoi requisiti prevedono che il database debba essere bloccato al 100%, Linq non fa per te.Non sono un DBA, quindi credo che la maggior parte dell'hype su prestazioni/sicurezza sia proprio questo.Linq è per me.

2) Puoi eseguire join con linq.

@Filippo:Linq trasforma automaticamente le valutazioni in parametri di query, quindi fornisce una certa protezione dall'iniezione SQL.Tuttavia, è necessario valutare attentamente le proprie esigenze per determinare quanta sicurezza è necessaria e a quali livelli.Linq semplifica notevolmente la gestione del database, ma rende più semplice mettere in secondo piano la progettazione della sicurezza, il che è una cosa negativa.

Altri suggerimenti

Bene, per motivi di sicurezza non dovresti inserire nessun dato inserito dall'utente nelle query.Se rispetti questa regola, non vedo il problema di avere l'autorizzazione di selezione.

Il fatto che tutti gli accessi al database siano "dietro" le procedure memorizzate dipende dalle esigenze dell'applicazione e dell'azienda.Ho implementato sistemi che utilizzano le visualizzazioni per ottenere tutti i dati e le procedure memorizzate per tutti gli aggiornamenti.Ciò consente la sicurezza centralizzata e la logica del database consentendo comunque agli sviluppatori front-end di utilizzare query SQL ove appropriato.

Come tante altre cose nella programmazione, dipende dalle esigenze del tuo progetto.

LinqToSql supporta le procedure memorizzate.Scott Gu ha un post a riguardo:

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

Sono molto d'accordo con Jeff Atwood sul tema "Stored Procedures vs.Problema SQL/LINQ in linea: Chi ha bisogno delle procedure memorizzate, comunque?.

Sono confuso sul motivo per cui vorresti eseguire un JOIN se fai parte della folla di SPROC per tutto;non dovresti racchiudere quel JOIN in un altro SPROC?

Come ha detto Will, LINQ non è stato progettato per il tipo di utilizzo del DB di cui parli;è stato progettato per fornirci SQL inline tipizzato staticamente.È tuttavia possibile controllare comunque l'accesso tramite le autorizzazioni utente se si utilizza LINQ to SQL.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top