2

DBML

私のdbmlには次のエンティティがあります:(例として作成)

Book <- Media -> AuthorsForMedia <- Author

矢印は私のdbmlの関係です。

本はメディアの一種であり、本のインスタンスには、その中のすべてのメディアに共通の値を持つメディアプロパティがあります。AuthorsForMediaは、AuthorId、MediaId、およびAuthorsForMediaIdと交差するテーブルです。

クエリ

リポジトリ内のgetクエリは次のとおりです。

public Book Get(int id)
{
    var query = from b in db.Books
                where b.BookId == id
                select b;

    return query.Single();
}

結果のオブジェクトには、bookプロパティが設定され、mediaプロパティにはすべての値が設定されています。

デバッグ中に[ウォッチ]ダイアログでAuthorsForMediaを見ると、次の値が設定されています。

Count = 0 
HasLoadedOrAssignedValues = false
IsDeferred = false

質問1

AuthorsForMedia(およびそれに対応するAuthorプロパティ)の値を遅延読み込みで評価できないのはなぜですか?

私が試したこと

この質問を読んだ後:

LoadWith / AssoicateWithでDataLoadOptionsを試しましたが、機能しませんでした。私は次のようなエラーで終わった

  • クラスFooのインスタンスを作成できませんエラー:System.NotSupportedException:サブクエリはタイプBookのメディアではサポートされていません
  • ... System.InvalidOperationException:指定された式はpAの形式である必要があります。ここで、pはパラメーターであり、Aはプロパティまたはフィールドメンバーです。
  • または、値がなかっただけです

役立つ場合は、これらすべてのコードスニペットを提供できますが、それは概念的な問題であり、構文上の問題ではないと思います。

概要

これらの値をどのように取得する必要がありますか、それは左結合であるか、またはこれまでに見つけられなかったものである必要がありますか?

4

2 に答える 2

3

これがLoadWithの外観です。

DataLoadOptions dlOptions = new DataLoadOptions();
dlOptions.LoadWith<Books>(book => book.AuthorsForMedia);
db.LoadOptions = dlOptions;
于 2009-07-16T17:49:13.200 に答える
1

DataLoadOptionsとLoadWith()が必要です。

どのように呼んでいますか?

于 2009-07-13T19:21:16.280 に答える