10

CSLAとEntityFrameworkは初めてです。12年前のWin32C++システムに代わる新しいCSLA/Silverlightアプリケーションを作成しています。古いシステムは、カスタムDCOMビジネスオブジェクトライブラリを使用し、ODBCを使用してSQLServerにアクセスします。新しいシステムが古いシステムをすぐに置き換えるわけではありません。今後数年間、同じデータベースに対して共存する必要があります。

最初はEFが最新で最高なので、EFが進むべき道だと思いました。小さなEFモデルと2つのCSLA編集可能ルートオブジェクトのみを作成した後(私のDBには800以上のテーブルがあるため、最終的には数百のオブジェクトがあります)、EFの使用について真剣に疑問を持っています。

現在のシステムでは、生成されたSQLを100%制御できるため、クエリの詳細なパフォーマンス調整を何度も行う必要があります。しかし、EFでは、舞台裏で多くのことが起こっているため、私はそのコントロールを失っているようです。http://toomanylayers.blogspot.com/2009/01/entity-framework-and-linq-to-sql.htmlのような記事は、EFの印象を助けません。

LINQ to EFのおかげで、人々はEFを好むようですが、私の基準はクライアントとサーバーの間で基準オブジェクトとして渡されるため、LINQがなくても同じように簡単にクエリを作成できるようです。WCF RIAには、実際のSQLに変換する前にサーバーに移動するクライアント側のLINQを実行できるクエリプロジェクション(またはそのようなもの)があることを理解しています。その場合、EFの利点を確認できますが、CSLAでは確認できません。 。

生のADO.NETを使用する場合、5年後の決定を後悔しますか?

最近、他の誰かがこの選択をしましたか、そしてあなたはどちらの方向に行きましたか?

4

3 に答える 3

7

あなたの場合、私はそれをすべて手作業で行うよりもEFを選択します。

なんで?EF(特に.NET 4)はかなり成熟しています。これにより、データアクセスコードをすべて手動でコーディングする必要がある場合よりも、ほとんどのデータベース操作をはるかに簡単に、はるかに少ないコードで実行できるようになります。

また、絶対的な最大パフォーマンスが必要な場合は、SQLステートメントをオンザフライで作成するデフォルトの動作の代わりに、挿入、更新、削除のストアドプロシージャをいつでもプラグインして、EF4が使用することができます。

EF4は、はるかに優れたストアドプロシージャの統合を備えており、これにより、両方の長所が実際に開かれます。

  • パフォーマンスが最優先されない80%のケースでは、EFの高い生産性を使用します
  • 残りの20%のストアドプロシージャを微調整して手作りし、EF4に接続します

いくつかのリソースを参照してください。

于 2010-05-23T21:26:02.240 に答える
2

要件とソリューションが混在しているようです。

私は通常、各要件を必須、持っていると便利、必須ではないもので評価します。そして、何が機能するかを確認します。

@marc_sが言ったことに同意します、あなたは両方の世界の長所を持つことができます。

私が言える他の唯一のことは、このソリューションが今後5年間使用される場合、ユニットテストを検討したかどうかということです。

EFを使用してこれを設定する方法については、たくさん があります。(ユニットテストでは懸念事項の分離が非常に複雑であるという理由だけで、私は個人的にADO.Netを避けています。)

簡単な解決策はありません。私はあなたのプロジェクトであなたがするのに1日かそこらかかるであろう機能を選びます。さまざまな方法(raw sql、EF、EF +ストアドプロシージャ)を試して、何が機能するかを確認してください。

于 2010-05-23T23:41:30.513 に答える
0

CSLAを客観的に見てください。「DataPortal」を呼び出して、呼び出しスタックを確認してください。

次に、これらのクラスを、ランタイムデータを格納し、一連の実行にわたって散布図を提供するCIビルドサーバーに配置します。

次に、作成されるコードを確認します。保護された/プライベートコンストラクターを持つ静的クリエーターに依存するクラスに照らして、依存性注入のようなものをどのように使用できるかを自問してください。

次に、「CSLA」クラスが引き受ける責任の数を見てみましょう。

最後に、環境ごとに異なるコンストラクターを使用してオブジェクトを作成することが理にかなっているかどうかを自問し、それらを単体テストする方法を自問してください。

于 2010-06-25T00:03:37.753 に答える