2


0

私はまだLINQとSQLデータベースへのアクセスに慣れようとしています。

私はあなたがあなたのデータに対するストアドプロシージャの実行権限のみを持つべきであるといつも教えられていました。

あなたは決してselect / insert / update / deleteを持つべきではありません。

(これはパフォーマンスとセキュリティのためです)

LINQからデータを取り出すには、明らかに選択権限が必要です。 LINQでストアドプロシージャを使用できることはわかっていますが、結合ができないので、要点は何ですか?

私は何かを逃しましたか?

4 Answer


2


1)私たちはプログラマであり、DBAファシストではありません。 データベースを100%ロックダウンする必要があるとあなたの要求が述べている場合、Linqはあなたのためではありません。 私はDBAではないので、パフォーマンス/セキュリティに関する宣伝の大部分はそれだけです。 Linqは私のためです。

2)あなたはlinqで参加できます。

_ @ Philippe_:Linqは自動的に評価をクエリパラメータに変換するので、いくつかのSQLインジェクション保護を提供します。 ただし、必要なセキュリティのレベルとレベルを判断するためには、まだ要件を綿密に評価する必要があります。 Linqはデータベースを扱うことをずっと容易にします、しかしそれはそれが悪いことであることを後部バーナーにsecuirtyデザインを置くことをより簡単にします。


1


データベースアクセスのすべてがストアドプロシージャの背後にあるかどうかは、アプリケーションと会社のニーズによって異なります。 私は、ビューを使用してすべてのデータとすべての更新に関するストアドプロシージャを取得するシステムを実装しました。 これにより、セキュリティとデータベースロジックの集中化が可能になると同時に、フロントエンド開発者は必要に応じてSQLクエリを使用できます。

プログラミングにおける他の多くのことと同じように、それはあなたのプロジェクトの必要性によります。

LinqToSqlはストアドプロシージャをサポートします。 Scott Guが投稿しています。


0


私はJeff Atwoodと「ストアドプロシージャ対 インラインSQL / LINQ "問題: 誰がストアドプロシージャを必要としますか?

あなたがSPROCのためにすべての人のために集まっているのなら、なぜあなたはJOINを実行したいのですか。そのJOINを別のSPROCにラップしないでください。

Willが言ったように、LINQはあなたが話している種類のDB使用のために設計されていません。静的に型付けされたインラインSQLを提供するように設計されています。 ただし、LINQ to SQLを使用している場合は、ユーザー権限を介してアクセスを制御できます。


0


セキュリティ上の理由から、ユーザーが入力したデータをクエリに入力しないでください。 あなたがこの規則に固執するならば、私は選択許可を持っているという問題を見ません。