2011-12-07 3 views
5

私は非常に混乱しています。私は何千もの追加をキューに入れようとしています。EF savechangesのオーバーロードがなく、acceptallchangesは使用できません。

私は をsystem.data.objectsには、.NET 4とエンティティフレームワーク4とも追加された参照を使用していますが、私はまだここのSaveChanges

ために利用可能な過負荷を持っていませんが、私のコードです:

 using (TransactionScope scope = new TransactionScope()) 
     { 
      using (myDbContext context = new myDbContext) 
      { 

       foreach (var p in model) 
       { 
        var tempProduct = new Products(); 
        // set a loopable list of available products 
        IEnumerable<MerchantProductFeedMerchantProd> prod = p.prod; 

        foreach (var i in prod) 
        { 
         var prodText = i.text.FirstOrDefault(); 
         var prodUri = i.uri.FirstOrDefault(); 
         var prodPrice = i.price.FirstOrDefault(); 

         FillTempProduct(feedId, i, tempProduct, supplierId, feedInfo, prodPrice, prodText, 
             prodUri); 


          context.Products.Add(tempProduct); 
          context.SaveChanges(false); // no overload 

       } 


       scope.Complete(); 
       context.AcceptAllChanges(); //acceptallchanges not referenced ?? 

      } 
     } 

これは本当に私の頭を打っているので、どんな助けも大歓迎です。

おかげ

答えて

7

あなたはDbContextのAPIを使用しているため、これらのメソッドは、ObjectContextはAPIからです。 DbContext APIは単純化されています=単純な要件のためだけです。あなたは、より複雑な要件がある場合は、あなたのDbContextObjectContextインスタンスに変換することにより、ObjectContextはAPIを使用する必要があります。ただ、私は場合

var objectContext = ((IObjectContextAdapter)myDbContext).ObjectContext; 
+0

hmmmmm、私は家に帰ったときに私はこの後にしようとします素敵なおかげ – davethecoder

+0

こんにちは、これは、動作しません。上記の私はmyDbContextについての不思議を取得する必要があるプロパティを使用します。だからmyDbContextに私はobjectContextプロパティを追加し、これを使用:using(ObjectContext context = new myDContext()。ObjectContext())しかし、私はそれを今追加する方法を知っていませんcontext.AddObject( "Products"、tempProduct);エラー:基本プロバイダーがOpenで失敗しました。 – davethecoder

+0

EFのどのバージョンを使用していますか? –

関連する問題