2

釘付けになったと思うたびに、再び頭をもたげます!

したがって、子のコレクションへのナビゲーション プロパティを持つマスター テーブルがあり、「createEntity」を使用してエンティティの新しい空のバージョンを作成すると、返されたエンティティのナビゲーション プロパティを確認できますが、/ にアクセスできません。プロパティを設定します。これは、子エンティティに親キーがまだ存在していないためだと思いますか?

明確にするために。新しいエンティティが返されるポイントにブレークポイントを配置でき、master() エンティティを調べると、そこにある children プロパティを確認できます。私が試してみると:

master().children.childProperty("this is a new value")

...次に、単に「オブジェクト関数observable()...」を取得し(その後、ノックアウトからコードをロードすると思います)、「メソッド「childProperty」がありません」で終了します

人に知られている括弧のすべての組み合わせを試したと思いますが、わずかに異なるエラーが発生しますが、何も機能しません。「子」は事実上配列なので、どこかに [0] を入れる必要がありますか?

明確にするために情報を追加しました。

以下のコメントで詳しく説明されているように、熱心な読み込みのクエリで「expand」が指定された既存のエンティティを取得すると、関連する子エンティティを持つマスター エンティティが返されます。そのプロパティは、「新しい」例で試していたメソッドで設定できます。それ以上は機能しません。既存のマスター/子を返すときの「子」コレクションの指定された長さは 1 で、新しいマスター/子を初期化するときの配列の長さはゼロです。

これは、従来のマスターと子の関係ではなく、子というよりは関連付けられたエンティティであると思います。説明すると、「マスター」には常に 1 つの子レコードがあります。マスターがボトルであり、子がボトルの色、内容、およびボトルのラベルの詳細を決定する関連レコードであると考えてください。ボトルは 1 本しかありませんが、色、内容物、ラベルには数十のバリエーションが存在する可能性があります。

既存のマスター レコードを取得するときは、必要な特定の子レコードも指定します。このページでは、特定のバリエーションを編集していて、ラベル テキストを変更したい場合があるため、1 つのマスター レコードと 1 つの子レコードのみを取得します。

別のページでは、ボトルのすべてのバリエーションを一覧表示するため、マスターと関連するすべての子を古典的な「1 対多」の例で取得します。

モデルは次のとおりです。

Public Class bMaster
    Public Property ID() As Integer

    ...other properties

    Public Overridable Property bChildren() As ICollection(Of bChild)
End Class

Public Class bChild
    Public Property ID() As Integer
    Public Property bMasterID() As Integer

    ...other properties

    Public Overridable Property bMaster() As bMaster
End Class
4

1 に答える 1