2011-12-07 1 views
5

매우 혼란 스럽습니다. 수천 개의 추가 작업을 대기열에 넣으려고 노력하고 있습니다.EF savechanges에 대한 오버로드가없고 acceptallchanges를 사용할 수 없습니다.

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

      } 
     } 

:

내가 을 system.data.objects하는 .NET 4 엔티티 프레임 워크 4도 추가 참조를 사용하고 있습니다하지만 난 여전히 SaveChanges를

여기

에 사용할 수있는 오버로드가없는 것은 내 코드입니다 이것은 정말 내 머리를 때 리고있어, 그래서 어떤 도움을 많이 주시면 감사하겠습니다.

감사

답변

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를 사용하고 있습니까? –

관련 문제