コンマ区切り値 (CSV) ドキュメントからデータを読み取り、その内容をデータベースに保存しています。CSV ファイルの各行には、次の列が含まれています。
- 顧客ID
- 緯度
- 経度
ドメイン モデルは次のとおりです。
Customer
多くを持っていますLocations
Location
- 緯度
- 経度
各行について、私は を読んでCustomer ID
データベースで調べています。
var customer = (from c in Context.Customer
where c.ID == id
select c).SingleOrDefault();
存在しない場合は、作成します。
if (customer == null)
{
customer = new customers();
customer.ID = id;
}
この時点では保存しません。次に、新しい を作成し、Location
その顧客を設定します。この顧客は実際にはまだデータベースに登録されていない可能性があることに注意してください。
ここで、次のことを考慮してください。顧客がまだデータベースにない場合は、データベースを作成します。しかし、私はまだそれを保存していません。次の行は、作成したばかりの同じ顧客に属していますが、まだデータベースにはありません。したがって、別の顧客が作成されます。
グラフをデータベースに保存するときが来ると、同じ ID を持つ 2 つの異なる顧客を保存しようとして失敗します。
まだ永続化されていない可能性がある場合でも、Entity Framework がそのコンテキスト内にあるものからも選択できるようにするにはどうすればよいですか?