0

コンマ区切り値 (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 がそのコンテキスト内にあるものからも選択できるようにするにはどうすればよいですか?

4

1 に答える 1

2

まず、新しく作成したエンティティをコンテキスト インスタンスにアタッチする必要があります。次に、Code First を使用している場合は、DbSet.Findメソッドを使用できます。ストアに保存されていないが、ストアへのクエリを実行せずに、既にコンテキストに関連付けられているエンティティを検索できます。

于 2012-06-07T08:08:13.387 に答える