4

私のドメイン モデルとその関連付けは次のとおりです。

  • CustomerRegionsが多い
  • RegionLocationsが多い

クライアントから、次の列を含む CSV ファイルが提供されました。

  • 顧客名
  • 地域名
  • 場所の名前
    • 緯度
    • 経度
    • ...

この情報に基づいて、名前で顧客を検索または作成し、名前で地域を検索または作成し、最後に名前で場所を検索または更新する必要があります。

私は次のことを試しました:

var customer = from c in _data.Customer
               where c.Name == cells[0]
               select c;

if (customer == null)
    customer = new Customer(...);

Customer地域と場所を検索または作成/更新するために同じパターンに従いますが、LINQ クエリの型を-object on lineに変換できないという問題が発生しますcustomer = new customers();customer後でこのオブジェクトを参照する必要があるため、2 つの個別の変数を持つことはできません。

Entity Framework でこれを達成するにはどうすればよいですか?

4

2 に答える 2

5

このコード

var customer = from c in _data.Customer
               where c.Name == cells[0]
               select c;

Name等しい値を持つすべての顧客をcells[0]返すため、戻り値の型はIQueryable<Customer>sigleではありません (これが機能しないCustomer理由です)。customer = new Customer(...)

必要なのは、FirstOrDefaultorを呼び出すことですSingleOrDefault(要件によって異なります) Customer

だからこれはうまくいくはずです

var customer = (from c in _data.Customer
               where c.Name == cells[0]
               select c).SingleOrDefault();
于 2012-06-05T05:49:27.327 に答える
2

これを試して

var customer = (from c in _data.Customer
               where c.Name == cells[0]
               select c).FirstOrDefault();

if (customer == null)
    customer = new Customer(...);
于 2012-06-05T05:48:54.107 に答える