-5

プロジェクトのアーキテクチャを設計しています。私たちのチームでは、Linq を使用するかどうかについて議論します。

linq について Google でサーフィンをしているときに、linqの簡単な長所と短所を示したこのリンクを見つけました。

私たちのプロジェクトの観点から 3 つの重要なポイントがあります。

  1. DBML 同時実行の問題
  2. 小さなデータセットは、実行よりもクエリの構築に時間がかかります
  3. 結合が非常に遅い

Linq to Entities について話しています。これらはすべて、私のプロジェクトが非常に大きいため、プロジェクトの要件に応じて重要なLinq関連の問題です。したがって、パフォーマンスは非常に重要な重要な要素です。

これらのlinqの問題を解決できますか? はいの場合、どのように解決しますか?

4

2 に答える 2

4

私はその投稿のいくつかの回答を読みましたが、それらの多くに同意または反対する必要があります. linq を使用する最も重要な要素は、開発時間の短縮です。SQL クエリのタイプミスはもうありません。複雑な SQL クエリの作成に時間を無駄にしません。また、linq to entities と linq to sql には違いがあります。あなたはそれを考慮していませんでした。それを読んでみることをお勧めします。ヒント: エンティティへの linq に進みます。

ご質問への回答。

  1. 同時実行の問題を linq (エンティティ) に関連付けることはしません。それはあなたがそれを実装する方法です。(バッチ) 更新の生の速度が必要な場合は、いつでも ADO.NET を使用できます。

  2. linq クエリを慎重に作成すると、必要なデータのみを取得できます。クエリの作成時に linq のパフォーマンスが低下することが心配な場合は、コンパイル済みの linq クエリを作成できます。

  3. すべての関係を適切な場所に配置して適切なモデルを作成すると、結合が遅くなることはありません。

于 2012-12-11T06:14:30.140 に答える
1

いつものように、これに対する答えは、場合によるということです。最近の方向性は間違いなくpro-ORMです。ストアド プロシージャまたは直接的な sql コマンドを使用すると、パフォーマンスとアトミック レコードの更新を大幅に制御できますが、私の個人的な経験では、これらのメリットよりも、スキーマとプロシージャの維持/更新に費やす時間が上回っています。これは、アジャイル チームにとって大きな減速となる可能性があります。Entity Framework や N-Hibernate などの厳密に型指定された ORM ツールを使用するもう 1 つの重要な利点は、コードがデータベース スキーマやストアド プロシージャから大幅に逸脱するのを防ぐことができることです。これにより、いくつかの非常に大きな問題が発生する可能性があります。

一般に、ORM ツールを使用し、必要に応じてストアド プロシージャを使用すると、エラーが発生します。

特定の例として Entity Framework を使用して、特定の質問に答えるには:

  1. Entity Framework 4 には、 OptimisticConcurrencyExceptionsの処理に役立つツールがいくつかあります。自分で解決を試みるか、例外をスタックにスローすることができます。
  2. これはおそらくマイクロ最適化です。一般に、Entity Framework は非常に高速です。これで障害にぶつかる前に、I/O の問題に対処できる可能性が高くなります。
  3. データベースとのラウンドトリップや遅延読み込みを頻繁に行っている場合、結合が遅くなる可能性があります。Entity Frameworkは、単一のクエリですべてを実行できるように、eager-loadingもサポートしています。

最終的には、必要なときにいつでもストアド プロシージャを使用できます。これは、排他的な行ロックを必要とする同時操作が多数ある場合に行います。

私が EntityFramework で見た欠点の 1 つは、Postgres での動作に問題が発生することがあるということですが、Visual Studio 以外のツールが役立ちます。

于 2012-12-11T06:24:55.640 に答える