1

クライアントからデータベースへのリモートアクセスを許可されたasp.netプロジェクトに取り組んでいます。

データベースには2人のユーザーがいます。1人のユーザーには読み取り専用アクセス権があり、他のユーザーには所有者アクセス権があります。クライアントは、データの読み取りには最初のものを使用し、挿入などには2番目のものを使用する必要があると言います。

また、dbサーバーからのデータが多いため、クライアントから可能な限りストアドプロシージャを使用するように言われました。Entity Framework(edmx)を使いたい。ストアドプロシージャを使用できますか?Entity Frameworkの前は、ストアドプロシージャにエンタープライズライブラリを使用していました。エンティティフレームワークを使用してデータをWebサーバーに取り込むのではなく、データベース関連のすべての作業がdbサーバー側で行われるように、戻ってストアドプロシージャで使用する必要がありますか?

また、1人のユーザーを読み取り専用に使用し、他のユーザーを使用して同じデータベースにアクセスして挿入するにはどうすればよいですか?2つのWeb構成を作成する必要がありますか?ユーザーを読み取り専用にして結果をより速く取得することは違いがありますか?

より良いアプローチがあれば、私に提案してください。

提案してください。

4

3 に答える 3

1

EFでストアドプロシージャを使用できます。ただし、エンティティをストアドプロシージャで機能させるのは非常に難しいことに注意してください。

EFは、SQLステートメントを記述せずにクエリを生成し、エンティティの変更を監視することによってSQLステートメントを生成します。エンティティをdbテーブルにマップするだけです。したがって、「Item」という名前のテーブルがある場合、コード側にオブジェクト「Item」が作成されます。コードを使用して「Item」エンティティを操作し、EFの関連メソッドを呼び出して、エンティティで行われた変更をDBに反映できます。

アクションに応じて動的に接続文字列を作成できます。

質問が広すぎるので、これが役立つかどうかはわかりません。

于 2012-05-25T06:30:51.587 に答える
0

一方のユーザーを介して読み取りアクセスを行い、もう一方のユーザーを介してアクセスを挿入することで、彼がどのような利点を享受していると感じているかを尋ねます。正当な理由がある場合は、開発時間とメンテナンスの増加に関してトレードオフを行っていることを確認してください。

次に、ストアドプロシージャの使用は、データの量とどのような関係がありますか?大量のクエリを実行している場合(おそらく大量のデータを取得している場合はそうではありません)、ストアドプロシージャを起動するリクエストがクエリよりも少なくなるため、ストアドプロシージャを使用することでネットワークトラフィックをわずかに減らすことができます。ストリング。しかし、それは心配する価値さえありません。

Jeff Atwoodは、実際にここにストアドプロシージャに関するいくつかの素晴らしいコメントを持っています:http: //www.codinghorror.com/blog/2004/10/who-needs-stored-procedures-anyways.html

およびここ: http: //www.codinghorror.com/blog/2005/05/stored-procedures-vs-ad-hoc-sql.html

通常、開発者がストアドプロシージャの使用を制限したい場合、それは現実的ではない認識された利点のためであり、正当な理由もなく開発が遅くなっていることに気づいていません。ストアドプロシージャが悪いわけではありませんが、それらには場所があり、可能な限り広範囲に使用する必要があるというルールを設定することは意味がありません。

于 2012-05-25T06:30:44.363 に答える
-1

EntityFrameworkはサーバー側では発生しません。SQLクエリを生成し、クエリはデータベースで実行されます。結果は、efによってオブジェクトにマップされたものを設定しました。これはORMと呼ばれます。グーグルはORMSに関するたくさんの情報を持っているべきです。

ブレア

于 2012-05-25T06:20:03.953 に答える