2011-12-07 9 views
5

Çok karışıkım, çok fazla ekler eklemek için boş yere çalışıyorum. Bunu yapmak için binlerce eklentim var, bu yüzden sadece veritabanını gerçekten bir kez yapmak istiyorum.EF savechanges için aşırı yüküm yok ve herhangi bir kabuldeğişim mevcut değil

 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 ?? 

      } 
     } 

:

Ben System.Data.Objects için .net 4 ve taraf çerçeve 4. ve ayrıca ilave referansı kullanıyorum ama hala SaveChanges

burada

için kullanılabilir aşırı yüklenme benim kodudur Bu gerçekten kafamı çarpıyor, bu yüzden herhangi bir yardım çok takdir edilecek.

sayesinde

cevap

7

Eğer DBContext API kullanarak Çünkü ve bu yöntemler ObjectContext API gelmektedir. DbContext API'sı basitleştirilmiştir = sadece basit gereksinimler içindir. Eğer daha karmaşık gereksinimleri varsa sizin DbContextObjectContext örneğine dönüştürerek ObjectContext API kullanmalıdır: sadece ben eğer

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

hmmmmm, ben eve gidince ben daha sonra bu çalışacağız güzel teşekkürler – davethecoder

+0

Hi, bu işe yaramazsa, Yukarıdaki kullanımı myDbContext bir özellik olması gerekiyor hakkında bir inilti almak. myDbContext için bir objectContext özelliği ekledim ve sonra şunu kullandım: using (ObjectContext context = new myDContext(). ObjectContext()) ancak şimdi nasıl ekleneceğini bilmiyorum context.AddObject ("Ürünler", tempProduct); HATA: Temel sağlayıcı Open'da başarısız oldu. – davethecoder

+0

EF'in hangi sürümünü kullanıyorsunuz? En son, –