3

私は DevExpress XPO ライブラリの長年のユーザーです。多くの優れた機能を備えていますが、いくつかの弱点があります。

  1. 既存のオブジェクトを保存すると、すべてのプロパティが更新クエリで送信されます。変更は、プロパティごとではなく、オブジェクトごとに追跡されます。
  2. オプティミスティック ロックは、列ごとではなく、オブジェクトごとに行われます。
  3. 楽観的ロック例外が発生した場合、競合の性質を説明するコンテキストは提供されません。あなたの唯一の本当の対応は、操作を失敗させるか、それを再現してループで再試行することです。
  4. XPQuery の LINQ サポートは非​​常に弱いです (少なくとも、私たちが使用している 8.1 では)。したがって、タイプセーフではない XPView や、必ずしも必要ではない列を返す可能性のある XPCollection を使用せざるを得ないことがよくあります。

LINQ to SQL がロックの最適化と更新の競合の処理を実装する方法について読んだ後、私は納得しました! 列レベルの楽観的ロックを実装し、テーブルに列を追加する必要がない点が気に入っています。競合の正確な性質を調べて処理できることは素晴らしいことです。また、列ごとの変更を追跡するという事実により、更新クエリがより効率的になるはずです。

もちろん、実際のアプリケーションで LINQ to SQL をまだ使用したことがないので、実際に比較できるかどうかはわかりません。また、XPO で楽しんでいる次のようないくつかの機能に類似したものがあるかどうかも不明です。

  1. 自動スキーマ更新 (私たちはオブジェクト設計がデータベース構造を逆にするのではなく駆動すると信じており、これによりソフトウェアの展開が大幅に簡素化されます)
  2. 継承の実装方法に関する 2 つのオプション (同一テーブルまたは 1 対 1 のテーブル リレーションシップ)
  3. インメモリ ストレージのサポート (単体テストで LINQ to Objects を代用できると思いますが)
  4. ストレージ プロバイダーのカスタマイズ (これにより、XPO クエリに NOLOCK サポートを追加できました)

コードの異なる部分に 2 つの ORM を一時的に使用する、試験的な部分的な移行を行う予定です。XPO と LINQ to SQL の両方を実際に使用した経験のある方はいますか? それらは実際にどのように比較されますか?具体的には、LINQ to SQL に欠けていて、コードの移行が困難になる機能をご存知ですか?

ああ、LINQ to Entities についても気にする必要がありますか? 必要なものよりもはるかに複雑に見えます。

4

2 に答える 2

2

コミュニティから回答が得られなかったのは残念ですが、これまでの私の考えは次のとおりです。しばらくの間、さまざまなプロジェクトで LINQ to SQL と ADO.NET Entity Framework を試す機会がありましたが、ADO.NET Entity Framework が私たちのニーズをよりよく満たしてくれると感じています。私が維持したいと思っていたXPO固有の機能に関する限り:

  1. 変換したら、スキーマの自動更新を行わなければなりません。ちょっと面倒ですが、これを別々に維持することにはいくつかの利点があります。
  2. ADO.NET Entity Framework には多くのデータ マッピング オプションがあります。さまざまな継承モデルがサポートされているようです。
  3. インメモリ ストレージについては、これがどの程度サポートされているかはまだわかりません。Entity Framework と互換性のある SQLite ADO.NET プロバイダーが存在するようで、SQLite はインメモリ ストレージを実行できるため、理論的には単体テストではインメモリ データベースを指定する別の接続文字列を使用できます。うまくいけば、それは簡単です。そうしないと、多くの作業 (リポジトリ インターフェイスの抽象化など) を行わないと、単体テストを作成するのが非常に難しくなります。
  4. プロバイダーのカスタマイズについてはまだ調べていません。以前ほど多くのデータをサービス間で共有しないようにシステムを設計しようとしましたWITH (NO LOCK)。そのため、以前のシステムで必要だったすべてのステートメントは必要ないかもしれません。または、SQL Server 2008 ではロック メカニズムが改善され、同じロックの問題が発生しないようになっている可能性があります。
于 2009-12-16T17:55:01.207 に答える
0

So you did migrate your application from XPO to Linq2Sql, didn't you? I've been playing with XPO as part of XAF too, honestly I prefer Linq2Sql/EF to XPO but since it is tightly coupled in XAF so I don't have other choice. We're going to use XAF to speed up UI implementation of a our product, I think XAF does its work quite well, but I'm really worried about XPO.

Thanks,

于 2010-03-12T08:50:32.740 に答える