問題タブ [xpo]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - DevExpress XPO ORM パッケージについて何か考えはありますか?
XPOは、私の会社で選択したオブジェクト リレーショナル マッパーです。長所と短所について何か考えはありますか?
製品に関する一般的な感想や逸話を探していました。XPO に切り替えるつもりはありません。アプリ内に存在するハードコーディングされた SQL 文字列を取り除き、すべてのデータ アクセスを完全に ORM に移行しています。
.net - DataLayoutControl (DevExpress ツール) にデータバインドされた永続オブジェクトを保存する方法は?
DataLayoutControl コンポーネントを表示する小さなフォームがあります。
GridControl を使用すると、オブジェクトが保存されます。DataLayoutControl (個別に表示) を使用すると、変更後に保存されません。ユーザー インターフェイスの編集後に基になるオブジェクトが変更されますが、保存されません。
これを有効にするにはどうすればよいですか?
PS: UnitOfWork.CommitChanges を試してみました (アーキテクチャ全体で uow が 1 つある) が役に立ちませんでした。
devexpress - DevExpress eXpressApp Framework (XAF) および eXpress Persistent Objects (XPO): 関連付けの読み込み時間を短縮するにはどうすればよいですか?
多数のレコードを持つ関連プロパティへのアクセス速度に問題があります。
という親クラスを持つ XAF アプリがありMyParent
ます。
には 230 件のレコードがありますMyParent
。
MyParent
という子クラスがありMyChild
ます。
には 49,000 件のレコードがありますMyChild
。
MyParent
と の間にMyChild
標準的な方法で定義された関連付けがあります。
でMyChild
:
そしてでMyParent
:
と呼ばれる特定のMyParent
レコードがありMyParent1
ます。
の場合MyParent1
、630MyChild
件のレコードがあります。
というクラスの DetailView がありMyUI
ます。
ユーザーがMyUI
DetailView の 1 つのドロップダウンでアイテムを選択すると、私のコードは別のドロップダウンにMyChild
オブジェクトを入力する必要があります。
ユーザーはMyParent1
最初のドロップダウンで選択します。
最初のドロップダウンで選択した値MyUI
のオブジェクトのコレクションを返すプロパティを作成しました。MyChild
プロパティのコードは次のとおりです。
DetailView の UI にのみ必要なため、DisplayedValues
プロパティを としてマークしました。NonPersistent
永続化することでコレクションの作成が初めて速くなるとは思いません。また、ドロップダウンを埋めるために使用された後は必要ないので、保存に時間を費やしたくありません。
問題は、呼び出しに 45 秒かかることtheParentValue = this.DropDownOne
です。
仕様:
- ビスタ事業
- 8 GB の RAM
- 2.33 GHz E6550 プロセッサ
- SQL Server Express 2005
これは、ユーザーが DetailView の多くのドロップダウンの 1 つを待つには長すぎます。
2 つの質問があるため、時間をかけてビジネス ケースをスケッチしました。
関連する値の読み込みを速くするにはどうすればよいですか?
はるかに高速に実行されるドロップダウンと DetailView をプログラムする別の (簡単な) 方法はありますか?
はい、ドロップダウンに表示するには 630 は項目が多すぎると言えますが、このコードは非常に時間がかかります。速度は 630 ではなく 49,000 に比例すると思われます。ドロップダウンの 100 項目は私のアプリには多すぎません。
アプリにはこれらのドロップダウンがかなりの数必要なので、ユーザーに各ドロップダウンに対してより複雑なフィルター条件を入力するように強制するのは適切ではありません。ユーザーは 1 つの値を選択して、関連する値を表示する必要があります。
多数のレコードを見つけるのが遅いかどうかは理解できますが、数百のレコードを見つけるのにそれほど時間がかからないはずです。
linq-to-sql - XPO から LINQ to SQL に移行するためのヒント
私は DevExpress XPO ライブラリの長年のユーザーです。多くの優れた機能を備えていますが、いくつかの弱点があります。
- 既存のオブジェクトを保存すると、すべてのプロパティが更新クエリで送信されます。変更は、プロパティごとではなく、オブジェクトごとに追跡されます。
- オプティミスティック ロックは、列ごとではなく、オブジェクトごとに行われます。
- 楽観的ロック例外が発生した場合、競合の性質を説明するコンテキストは提供されません。あなたの唯一の本当の対応は、操作を失敗させるか、それを再現してループで再試行することです。
- XPQuery の LINQ サポートは非常に弱いです (少なくとも、私たちが使用している 8.1 では)。したがって、タイプセーフではない XPView や、必ずしも必要ではない列を返す可能性のある XPCollection を使用せざるを得ないことがよくあります。
LINQ to SQL がロックの最適化と更新の競合の処理を実装する方法について読んだ後、私は納得しました! 列レベルの楽観的ロックを実装し、テーブルに列を追加する必要がない点が気に入っています。競合の正確な性質を調べて処理できることは素晴らしいことです。また、列ごとの変更を追跡するという事実により、更新クエリがより効率的になるはずです。
もちろん、実際のアプリケーションで LINQ to SQL をまだ使用したことがないので、実際に比較できるかどうかはわかりません。また、XPO で楽しんでいる次のようないくつかの機能に類似したものがあるかどうかも不明です。
- 自動スキーマ更新 (私たちはオブジェクト設計がデータベース構造を逆にするのではなく駆動すると信じており、これによりソフトウェアの展開が大幅に簡素化されます)
- 継承の実装方法に関する 2 つのオプション (同一テーブルまたは 1 対 1 のテーブル リレーションシップ)
- インメモリ ストレージのサポート (単体テストで LINQ to Objects を代用できると思いますが)
- ストレージ プロバイダーのカスタマイズ (これにより、XPO クエリに NOLOCK サポートを追加できました)
コードの異なる部分に 2 つの ORM を一時的に使用する、試験的な部分的な移行を行う予定です。XPO と LINQ to SQL の両方を実際に使用した経験のある方はいますか? それらは実際にどのように比較されますか?具体的には、LINQ to SQL に欠けていて、コードの移行が困難になる機能をご存知ですか?
ああ、LINQ to Entities についても気にする必要がありますか? 必要なものよりもはるかに複雑に見えます。
versioning - 異なるバージョン間で単一の XPO を維持する方法は?
1 つの XPO を使用して、同じコードを AX4 と AX5 で動作させたいと考えています。バージョンを確認するためのプリコンパイラ ディレクティブを探しています。
command-line - コマンドラインで axapta 2009 xpo をインポートしてコンパイルする
コマンドライン経由で既存の xpo-export を ax2009 aot にインポートし、その後、このインポートされた xpo だけをコンパイルする方法を探しています。グーグルはコマンドラインでaot全体をコンパイルする方法を教えてくれますが、これにはかなり時間がかかります。xpo (共有プロジェクト) をインポートして、これらのオブジェクトだけをコンパイルする方法はありますか?
インポートする必要があるオブジェクトが ax によってバージョン管理され、チェックインされている場合、どのような可能性がありますか?
オプションでチェックアウト、インポート、上書きの回避 - 質問、コンパイル、実行を自動化する簡単な方法を望んでいます;)
前もって感謝します!
devexpress - スレッド間でXPObjectオブジェクトを共有する
私はXPOを評価していますが、これまでのところ非常に優れており、本当に気に入っています。
バックグラウンドスレッドでディレクトリを監視しています。新しいファイルが追加された場合は、ファイル名を解析し、このオブジェクトをデータストアに保存してから、オブジェクトをargとしてイベントを発生させます。このイベントは、UIスレッドで処理されます。呼び出すと、UIスレッドでXPObjectの状態を変更する必要がありますが、スレッドセーフを確認するにはどうすればよいですか?XPObjectのOidでイベントを発生させますか?UIスレッドでは、dbからオブジェクトを取得して処理しようとします。これは、100万個のオブジェクトがある場合、少しばかげた設計のようです。
なにか提案を?
.net - マルチスレッドをより適切にサポートする.NET ORM?
.net ORM に関する質問が何千回も寄せられていることは知っていますが、どの ORM がマルチスレッド環境で簡単に操作できるか知りたいです。商用または無料の両方を歓迎します。
現在、Devexpress の XPO を使用していますが、マルチスレッド アプリでの使用に違和感があります。あるスレッドのオブジェクトを別のスレッドで共有することはできません。別のスレッドで使用するには、キーを使用して DB からオブジェクトを見つける必要があります。これは本当に面倒です。オブジェクトの状態をロックしても、DB オブジェクトの状態を DB に永続化することはできません。たとえば、オブジェクトを作成したスレッド以外の別のスレッドから Save() メソッドを呼び出すことはできません。
ところで、私は XPO を使い始めたばかりで、間違った使い方をしているのかもしれません。
linq - ASP.NET ページで動的に指定された大規模なテーブルを取得するための最良の戦略
私たちのプロジェクトの 1 つを最適化する方法について、ちょっとしたアドバイスを探しています。SQL2008 データからデータを取得し、それを DevExpress ASPxGridView に表示する ASP.NET/C# システムがあります。検索されるデータは、多数のデータベースの 1 つから取得できます。データベースはすべてわずかに異なり、定期的に追加および削除されています。ユーザーにはライブの「会社」のリストが表示され、対応するデータベースからデータが取得されます。
現時点では、標準の SqlDataSource と動的に作成された SQL SELECT ステートメントを使用してデータを取得しています。ステートメントにはいくつかの JOIN と、オプションの WHERE 制約があり、データベースとユーザーの権限レベルに応じて動的に作成されます。
パフォーマンスは別として、これらはすべてうまく機能します (正直なところ!)。一部のデータベースに関しては、数十万の行があり、データの取得とページングが非常に遅くなります (データベースは既に適切にインデックス化されています)。したがって、私はシステムを高速化する方法を検討してきましたが、それは XPO または LINQ の 2 つの選択肢に要約されるようです。
LINQ は一般的な選択肢のようですが、本質的に非常に動的なシステムで実装するのがどれほど簡単かはわかりません.LINQ がアクセスできるデータベースごとに「定義」を作成する必要がありますか? また、LINQ クエリを動的に作成することについても少し確信が持てませんが、少なくともその一部が実行可能であるように思われるいくつかの例を見てください。
一方、XPO では、その場で XPO データ ソースを作成できるようです。ただし、他のテーブルに結合する方法に関する情報があまり見つかりません。
このプロジェクトにレトロフィットを試みるのに最適な方法 (ある場合) について、誰かアドバイスをいただけますか? それとも、現在使用されている動的 SQL モデルは LINQ や XPO とは根本的に異なり、そのままにしておくのが最善でしょうか?
timer - タイマーでXPOオブジェクトを変更するためのWebサービスを作成する
新しいオブジェクトを作成するクライアントがいくつかあります。新しいオブジェクトが作成されたら、時間が経過するといくつかのオブジェクトプロパティを変更するタイマーを開始する必要があります(各オブジェクトは、特定の時間、定義されたクライアントグループに対してのみ表示できます)。この目的のWebサービスに使用したいと思い、タイマーを開始するメソッドを作成しました。
たとえば、タイマーを5分に設定する必要があります。実行時間に制限はありますか?タイマーは私のWebサービスを存続させますか?