私はしばらくこれと戦ってきました。多対1の関連付けを実装しようとしています。テーブルには、読み取り値と呼ばれる行がたくさんあります。これらは時間の経過とともに蓄積され、時々私はそれらをエクスポートしたいと思います。それらをエクスポートするときに、ExportEventという新しいオブジェクトを作成して、エクスポートされた行を追跡し、必要に応じて再エクスポートできるようにします。したがって、Readingは、エクスポートする前にReadingsを作成するため、ExportEventとnull許容の外部キー関係にあります。
私が見つけたのは、次にエクスポートを実行するときに、最初にExportEvent(evt)を作成し、を使用して読み取り値を追加するかどうかです。
evt.Readings.AddRange(),
または私が使用する場合
foreach(reading)
reading.ExportEvent = evt
SubmitChangesを呼び出すと、evtへの関連付けで作成された新しい読み取り値が常に取得され、元のレコードは更新されません。
ただし、これを最も単純なものに戻しましたが、関連付けなしで2つのオブジェクトを作成できるかどうかを確認するために、すべての読み取り値を取得してそれらのint値を更新したときにも、submitchangesによって多数の新しいレコードが挿入されていることがわかりました。 。どうしたの?