0

DUPLICATE of自動生成された Linq to SQL クラスがすべてのデータをロードしないようにするにはどうすればよいですか? そこに回答を投稿してください!

NerdDinnerチュートリアルの例によく似た ASP.NET MVC プロジェクトがあります。(私は MVC 2 を使用していますが、それを作成するために NerdDinner チュートリアルに従いました)。

チュートリアルのパート 3の手順に従って、"Linq to SQL Classes" (.dbml) サーフェスを作成し、そこにデータベース テーブルをドロップして、データベースの Linq-to-SQL モデルを作成しました。デザイナーは、データベース テーブルに基づいて、生成されたクラス間の関係を自動的に追加しました。

私のクラスが NerdDinner の例に従っているとしましょう。そのため、Dinner テーブルと RSVP テーブルがあり、各 Dinner レコードは多くの RSVP レコードに関連付けられています。したがって、生成されたクラスでは、Dinner オブジェクトには RSVP のリストである RSVPs プロパティがあります。オブジェクト。

私の問題は次のとおりです。Dinner オブジェクトにアクセスするとすぐに、 RSVPsメンバーを使用していなくても、対応するすべての RSVP オブジェクトが読み込まれているようです (これについては間違っていることがわかってうれしいです)。

最初の質問: これは本当に生成されたクラスのデフォルトの動作ですか?

私の特定の状況では、オブジェクト グラフにはさらに多くのテーブル (桁違いに多くのレコードがある) が含まれているため、これは悲惨な動作です。ひとり親の記録。

2 番目の質問: この動作を変更できる、デザイナー UI を介して公開されているプロパティはありますか? (私は何も見つけることができません)。

3 番目の質問: DataContext に関連付けられDataContextたオブジェクトを使用して、関連するレコードの読み込みを制御する方法の説明を見てきました。DataShapeそれが私が意図していることですか?もしそうなら、それを行う方法だけでなく、通常の使用のための「パターン」を提案するNerdDinnerのようなチュートリアルはありますか?

4

1 に答える 1

1

ディナークラスを指定すると、外部キー関係プロパティが自動的に読み込まれません。これを機能させるには、次のようにデータロードオプションを設定する必要があります。

var o = new DataLoadOptions();
o.LoadWith<Dinner>(i => i.RSVPs);

ただし、RSVPにアクセスすると、デフォルトで自動的にロードされます(また、インテリセンスでプロパティに移動する場合は、参考までに)。

HTH。

于 2010-03-12T19:53:41.587 に答える