2011-12-07 13 views
5

Jestem bardzo zdezorientowany, staram się na próżno, aby umieścić w kolejce wiele wkładek mam tysiące rozszerzeń, aby to zrobić i chcę tylko raz zrobić bazę danych.Nie mam przeciążenia dla EF zmian i bez akceptowanych zmian

Używam .NET Framework 4 Entity Framework 4 i również dodane odniesienie do system.data.objects ale mam jeszcze żadnego SaveChanges

przeciążenie tutaj jest mój kod:

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

      } 
     } 

to naprawdę niszczy teraz moją głowę, więc każda pomoc będzie bardzo cenna.

dzięki

Odpowiedz

7

Ponieważ używasz DbContext API i metody te są z ObjectContext API. Interfejs API DbContext jest uproszczony = dotyczy tylko prostych wymagań. Jeśli masz bardziej złożone wymagania należy użyć ObjectContext API przez konwersja DbContext do ObjectContext przykład:

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

Hmmmmm, ładne i spróbuje to później, kiedy wracam do domu, dzięki – davethecoder

+0

Cześć, to nie działa, jeśli tylko użyj powyższego, aby uzyskać jęk na temat mojegoDbContext, który musi być własnością. więc do myDbContext dodałem właściwość objectContext, a następnie użyłem tego: using (ObjectContext context = new myDContext(). ObjectContext()), ale nie wiem jak dodać do niego teraz context.AddObject ("Products", tempProduct); BŁĄD: podstawowy dostawca nie powiodło się podczas otwarcia. – davethecoder

+0

Jaką wersję EF używasz? –