2011-09-12 5 views
1

私はEF 4.1が新しく、EF 4.1からいくつかのコードを(コードを先に)移動しようとしています。ここにいくつかの背景があります。私はいくつかの会社の製品を管理しているので、 "Company"という列のテーブル "Product"があります。特定の会社の製品を含むExcelファイルからこのテーブルを更新する必要があります(存在しない場合は挿入、そうでない場合は更新)。 Entity Framework 4.1でExcelからdbを更新

  • 検索:製品のリストとしてExcelで表示される各製品については
  • を会社C1のためのすべての製品を取得し

    • :ここで私は(独自のDBアクセスコードとLINQを使用して)やっているものです製品が存在しない場合はExcelから製品がすでに
    • 存在する場合は製品のロードリスト:
    • 新製品のインスタンスを作成するデータベース
    • 012に製品を追加
    • ロードされた製品のリストはかなり簡単ですが、EF 4.1に変換することは容易であることは思えないデータベース

内の他の

  • 更新製品に製品を追加します。

    私は簡単にすることができますコンテキストからすべての製品を検索およびフィルタリングします。また、ロードされたリストでExcel製品を簡単に検索することもできます。存在しない場合は、製品を作成してコンテキストに追加することができます。しかし、私が新しい製品をメモリにロードした製品のリストに追加する「キャッシング」システムを模倣する方法(Excelファイルには同じ製品が数回含まれている可能性があります)また、エンティティの状態を変更し、いつsavechangesを行うのですか?

    キリスト教

  • 答えて

    0

    ここでは、これを行う方法の概要を示します。

    EFは、読み込まれたエンティティをキャッシュします。 Localプロパティを使用してアクセスできます。このコレクションは、新しいエンティティを追加するときにEFによって変更されます。

    context.Products.Where(p => p.Company == "C1").ToList();//force EF to load products 
    
    while(/*loop through excel file) 
    { 
        var product = context.Products.Local.Where(p=> p.Id == excelProductId); 
        if (product == null) 
        { 
        //insert 
        } 
        else 
        { 
        /update 
        } 
    } 
    
    context.SaveChanges(); 
    
    +0

    この「ローカル」プロパティは、私が探していたものとまったく同じでした。完璧! – Christian

    関連する問題