3

Linq / Entity Frameworkを使用してC#アプリからデータベースにデータを保存しようとしています。単一のテーブルへの挿入は簡単ですが、すべて自動インクリメントIDで相互接続されている3つのテーブルにデータを挿入する方法がわかりません。これはスクレイプ用なので、スレッドとそのすべての投稿を取得しています。各ThreadTitleと各投稿はユーザーに関連付けられています(実際のテーブル名ではありません)。

私の設計アイデアは、スレッド全体をメモリにスクレイプしてから、「バッチ」挿入を行うことでした。負荷を減らすために、ルックアップや複数の挿入などを行わずに、関係の制約を維持する方法があることを望んでいました。

4

1 に答える 1

2

一方(A)からもう一方(B)にFKがあるために関連する2つのレコードを保存する場合は、次のようにします。

  • オブジェクトBを作成します

  • オブジェクトBをコンテキストに追加します

  • オブジェクトAを作成する

  • B(AB)を指すAのナビゲーションプロパティを値Bに設定します。

  • オブジェクトAをコンテキストに追加します

  • コンテキストで変更を保存する

実際には、両方のオブジェクトをコンテキストに追加する必要はありません。関連するEFが「ツリー内」ですべてを見つけることができるため、1つで十分です。EFは、最初に何を挿入するかを自分で判断し、正しいIDを設定します。

これはどういう意味ですか?お役に立てれば。

于 2012-07-13T20:54:25.820 に答える