2011-12-07 8 views
5

Estoy muy confundido, intento en vano hacer cola en varias inserciones, tengo miles de adiciones para hacer, así que solo quiero hacer la base de datos una vez.No tengo sobrecarga para los cambios de EF, y no hay cambios aceptables disponibles

estoy usando .NET 4 y 4 marco de la entidad y referencia también añadido a system.data.objects pero todavía no tengo ninguna sobrecarga disponible en SaveChanges

aquí está mi código:

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

      } 
     } 

esto realmente está maltratando mi cabeza ahora, por lo que cualquier ayuda sería muy apreciada.

gracias

Respuesta

7

porque está utilizando la API DbContext y estos métodos son de API ObjectContext. DbContext API se simplifica = solo para requisitos simples. Si usted tiene requisitos más complejos debe utilizar la API de ObjectContext mediante la conversión de su DbContext-ObjectContext ejemplo:

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

hmmmmm, agradables Voy a tratar esto más adelante cuando llegue a casa, gracias – davethecoder

+0

Hola, esto no funciona, si sólo uso el anterior me da un gemido sobre myDbContext que necesita ser una propiedad. así que para myDbContext agregué una propiedad objectContext y luego usé esto: using (ObjectContext context = new myDContext(). ObjectContext()) pero no sé cómo agregarle ahora context.AddObject ("Products", tempProduct); ERROR: el proveedor subyacente falló en Abierto. – davethecoder

+0

¿Qué versión de EF estás usando? –

Cuestiones relacionadas