問題タブ [object-graph]
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.
asp.net - 切断されたオブジェクトグラフで重複を処理する方法は?
ASP.NETアプリケーションで切断されたPOCOモデルを更新する際に問題が発生しました。
次のモデルがあるとしましょう。
- ユーザー
- 地区
- 注文
ユーザーは0以上の地区を担当でき、注文は地区に属し、ユーザーは注文の所有者になることができます。
ユーザーがログインすると、ユーザーと関連する地区が読み込まれます。その後、ユーザーは注文を読み込み、注文の所有者として自分自身を設定します。ユーザー(および関連する地区)と注文(および関連する地区)は、2つの異なるdbcontextを使用した2つの異なる呼び出しでロードされます。ユーザーが注文を割り当てた後で注文を保存したとき。オブジェクトのキー値が別のオブジェクトと競合しているため、acceptchangesを続行できないという例外が発生します。
同じ地区がユーザーが責任を負う地区のリストと注文の両方に表示される可能性があるため、これは奇妙なことではありません。
私はこの問題の解決策を高低で検索しましたが、私が見つけた答えは次のいずれかであるようです:
- 私の場合、ユーザーの地区となるオブジェクトの1つの関連エンティティをロードしないでください。
- オブジェクトを使用してユーザーを注文に割り当てるのではなく、注文オブジェクトに外部キーIDを設定するだけです。
- 明らかにそれを処理するので、nHibernateを使用してください。
1を試しましたが、うまくいきましたが、注文に関連付ける前に地区なしでユーザーをロードするか、浅いクローンを作成する必要があるため、これは間違っていると感じています。これは、この単純なケースでは問題ありませんが、問題は、私の場合、地区がグラフにさらに数回表示される可能性があることです。また、オブジェクトがあるので意味がないようですので、それらを接続してグラフを更新してみませんか。注文のグラフ全体が必要な理由は、すべての情報をユーザーに表示する必要があるためです。それで、すべてのオブジェクトを取得したので、これを機能させるために、なぜそれをリロードまたはシャロークローンする必要があるのですか?
STEを使用してみましたが、別のコンテキストによってロードされたグラフにオブジェクトをアタッチできないため、同じ問題が発生しました。だから私は正方形1に戻っています。
これはチュートリアルコード以外の一般的な問題だと思います。それでも、私はこれに対する良い解決策を見つけることができないようです。これは、私がどのような状況でもPOCO / EFの使用を理解していないか、この問題の答えを見つけるためにgoogleを使用するのが苦手だと思います。
JuliaLermanのO'Reillyから両方の「ProgrammingEntityFramework」の本を購入しましたが、これらの本でも私の問題を解決するものが見つからないようです。
一部のオブジェクトが繰り返され、必ずしも同じコンテキストからロードされるとは限らないグラフの処理方法に光を当てることができる人はいますか?
ruby-on-rails - 2つの関連するオブジェクトグラフを再帰的に更新するためのパターン
私がオブジェクトモデルを持っていると想像してください:
ブログにはたくさんの記事があり、記事にはたくさんのコメントがあります
また、ブログAとブログBの2つのブログがあるとします。
と
ブログAとブログBのオブジェクトグラフを比較し、ブログAのオブジェクト の値に基づいてブログBを更新する必要があります。
この場合、ブログBはコメント3を「楽しいもの」に変更し、記事2およびコメント2と同じ値で新しいオブジェクトをインスタンス化する必要があります。
グラフを再帰的に歩くことは明らかな解決策ですが、ロジックは複雑になります。車輪の再発明はしたくない...これを行うためのパターンやプロセスはありますか?
Ruby/Railsを使用しています
java - Object Graph JAXB 分析を表示することは可能ですか?
JAXB xml にマーシャリングしようとしている既存の複雑なオブジェクト モデルがあります。可能であれば、既存のドメイン クラスを変更したくありません。ファイルにマーシャリングするためにこのスニペットが機能しています(Groovyを使用)
問題は、オブジェクト グラフが非常に複雑であり、JAXB が教えてくれることです。com.sun.istack.internal.SAXException2: A cycle is detected in the object graph. This will cause infinitely deep XML: com.example.Object@1eef1eb[Id=100053900] -> com.example.Object@1eef1eb[Id=100053900]
検出されたサイクルに関する詳細情報を取得する方法はありますか? サイクルを選択できるように、グラフを分析したり、グラフィカルにリストしたりするのに役立つツールを知っている人はいますか? このグラフには多くのサイクルがあると感じています(古くて複雑です)ので、助けていただければ幸いです。
別の方法として、無限に深い XML を作成しないように、JAXB に 'n' レベルまたは類似のレベルのみを設定するように指示できますか?
編集:
したがって、私の特定の問題に関して...既存のドメインオブジェクトには、自己参照キーワードを「取得」Object getThis()
およびvoid setThis(Object obj)
「設定」するメソッドが定義されていることがわかりました。this
それが私のサイクルの原因でした。これは、JAXB がどのプロパティをマーシャリングするかを決定するために JavaBean メソッド定義を使用する必要があるという事実も浮き彫りにします (私はこれまで知りませんでした)。
ただし、元の質問はまだ残っていると思います。オブジェクト グラフを分析/表示するための優れたツールはありますか?
drools - Droolsオブジェクトグラフルールの定義
DroolsでFulfillmentオブジェクトを生成しようとしているオブジェクトグラフがあります。具体的には、フルフィルメントオブジェクトは、満たされている、または満たされていないルールを表します。私のオブジェクトグラフは次のようになります。
レコードが両方とも同じイベントを指している場合、レコードは要件を満たすことができます。これにより、DroolsでFulfillmentオブジェクトが生成されます。
フルフィルメントを生成するための削減ルールは次のとおりです。
ここで遭遇する問題は、ユーザーにレコードがない場合、要件にフルフィルメントが挿入されていないことです。これは、グラフを満たすために検索するRecord()がないためだと思います。
ゼロ以上の存在を必要とせずにレコードを使用する方法はありますか?
また、真と偽の両方のフルフィルメントを挿入するには、ここに2つのルールが必要ですか、それともこれを行うためのより良い方法がありますか?
編集
これらのルールで私が直面しているもう1つの問題はRequirement(event contains $rec.event)
、特定のイベントのコレクションを満たすレコードがあるかどうかを見つけるタスクを実行しないことです。多くのレコードの単一のイベントと単一の要件の複数のイベントの間に重複が存在するかどうかを確認するためのより良い方法はありますか?
別の編集
これが私が考えた別のアプローチです。要件とレコードのペアが見つからない場合にフルフィルメントを挿入する代わりに、一致する正のフルフィルメントがないすべての要件に対してロジックフルフィルメントを挿入しないのはなぜですか。
これにより、2つのコレクションの重複を比較する問題と、ユーザーにレコードがない場合が処理されます。(これに関するいくつかの検証をいただければ幸いです)。
jpa - DroolsJPAエンティティオブジェクトグラフの更新
Droolsルールを定義するとき、オブジェクトグラフに対応するための最良の方法は何ですか?
多対多の関係を持つ次のエンティティオブジェクトグラフがあるとします。
そして私は次の不自然なルールを持っています:
次のように、ユーザーをksessionに挿入できます。
次に、それらを更新します。
しかし、Valueオブジェクトを直接に変更する"Orange"
と、ユーザーをルートとして挿入されたため、ValueにはFactHandleがありません。ルールを定義し、エンティティを挿入して、エンティティを個別に変更でき、Droolsが結果を評価するようにするためのより良い方法はありますか?
ios - あるアプリケーションでCoreDataオブジェクトグラフを作成し、それをプリセット状態から別のアプリケーションで使用できますか?
現在の私のアプリには、約5,000の辞書の.plistがあり、実行時に、カスタムクラスの5,000のオブジェクトを作成するために使用します。それぞれにいくつかの文字列、いくつかのブール値などが含まれています。これはかなり迅速なプロセスであり、数秒かかりますが、数千のオブジェクトを含む.plistを使用すると少し扱いにくくなります。
Core Data(これまで使用したことはありません)に移行するので、最初のステップでは、その.plistからこれらのカスタムオブジェクトにデータを取得し、コンテキストに保存します。私はビデオなどを見てきましたが、それで大丈夫だと思います。
私の最初の質問は、オブジェクトグラフとデータモデルを小さな別のアプリ(たとえば、ObjectMakerと呼ばれる)で作成し、そこに保存して、.sqliteまたはデータを実際のアプリにエクスポートする形式でインポートできますか?作ってるの?そこから、すべてのフェッチリクエストを実行し、データをさらに編集して保存します。
私の2番目の質問は、ユーザーが最初にアプリを開いたときに取得するオブジェクトグラフの「最初の起動状態」を提供することは可能ですか(5,000個のオブジェクトが作成され、アクセス/クエリの準備ができているなど)。アプリに.sqliteまたはObjectMakerアプリでデータをエクスポートする形式を同梱し、.plistが存在することを知らなくてもそれを排他的に使用することを希望します。
ありとあらゆる回答をありがとうございました^_^
ios - 誰かがiOSのファイル所有者を説明できますか
iOS が登場してから長い間議論されてきましたが、この質問について事前にお詫び申し上げます。しかし、最善を尽くしても、まだ理解できません。私が想像できる最も近いイメージは、「凍結して乾燥させたオブジェクト グラフ」です。
では、何をするかを理解するまで実際には何も説明できないことを考慮して、次の例を見てみましょう。
1) UIView などの Xib ファイルと、ラベルと imageView があります。
2) IB の ID インスペクターで Xib にアタッチされた、UIView のサブクラスである classX があります。IB アウトレットと IB アクションは、接続インスペクターでこのクラスに接続されます。このクラスは、IB/IA をプロパティとして宣言します。
3) classVC で表される UIViewController があります。このクラスでは、1) 標準を使用してインスタンス化します[[NSBundle mainBundle] loadNibNamed:@"bla" owner:??? options:nil][0];
4) classX と classVC は、カスタム デリゲート、標準的なものを介して通信します。
質問:
a)XIB ファイルの所有者は何ですか。正直なところ、わかりません。
b) owner パラメータには何を入力すればよい[[NSBundle mainBundle] loadNibNamed:@"bla" owner:??? options:nil][0];
ですか? また、最も重要なのはなぜですか?
オブジェクト グラフが凍結解除され、水が供給されている場合、ランタイムはアウトレットが 2) で定義した接続を行うべきではないので、この場合のファイルの所有者のポイントは何ですか?
また
XIB ファイル アウトレットが何にも接続されていない場合、「ファイルの所有者」とは、「私は必要なすべての OUtlets を含むクラスであるため、そのクラス インスタンスと圧縮解除された XIB の間の接続を確立できるのでしょうか? (そのため、私は関連付けはどのように行われるのでしょうか???)
それで、それだけです。以前と同じように愚かです。
編集:他の回答も同様に有効であるという事実には同意しません。私はそれらが何を意味するかを理解していますが、これまでのところ、私が説明するケースに対して所有者パラメーターが何を保持すべきか、そして最も重要なのはその理由をまだ理解していません。
ios - 辞書を含む NSArray のアーカイブ
に保存しようとしていNSMutableArray
ますCoreData
。配列にはオブジェクトが含まれていますNSDictionary
NSDictionary には次の構造があります
コア データに書き込むには、次のコードを使用します。 parray は BinaryData 型です。
そして、私が使用する値を取得するために
取得しようとすると、次のエラーが発生します。
NSArray と NSDictionary が NSCoding プロトコルを採用していることを確認しました。ここで何が間違っていますか?