2011-12-07 81 views
5

我非常困惑,我試圖徒勞排隊多個插入我有成千上萬的增加,所以我只想真正做數據庫一次。我沒有過載EF保存更改,並沒有acceptallchanges可用

我使用.NET 4.0和Entity Framework 4,並還增加了參考system.data.objects ,但我仍然沒有可供調用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);錯誤:底層提供程序在打開時失敗。 – davethecoder

+0

您使用的是什麼版本的EF? –