Ik heb geen overbelasting voor EF-opslagwijzigingen en er zijn geen acceptallanges beschikbaar

Ik ben erg in de war, ik probeer tevergeefs meerdere inlegvellen in de wachtrij te zetten. Ik heb duizenden toevoegingen om dat te doen, ik wil de database maar één keer echt doen.

Ik gebruik .net 4 en entiteitskader 4 en voegde ook een verwijzing toe naar system.data.objects maar ik heb nog steeds geen overbelasting beschikbaar voor SaveChanges

hier is mijn code:

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

            }
        }

dit is echt mijn hoofd mishandelen, dus alle hulp zou zeer op prijs gesteld worden.

bedankt

5

1 antwoord

Omdat u de DbContext API gebruikt en deze methoden komen uit de ObjectContext API. DbContext API is vereenvoudigd = het is alleen voor eenvoudige vereisten. Als u complexere vereisten hebt, moet u de ObjectContext API gebruiken door uw instantie DbContext naar ObjectContext te converteren:

var objectContext = ((IObjectContextAdapter)myDbContext).ObjectContext;
7
toegevoegd
Welke versie van EF gebruikt u?
toegevoegd de auteur Ladislav Mrnka, de bron
hmmmmm, leuk ik zal dit later proberen als ik thuis kom, bedankt
toegevoegd de auteur davethecoder, de bron
Hallo, dit werkt niet, als ik alleen het bovenstaande gebruik, krijg ik een kreun over myDbContext dat een eigendom moet zijn. dus met myDbContext heb ik een eigenschap objectContext toegevoegd en dit gebruikt: using (ObjectContext context = new myDContext (). ObjectContext ()) maar ik weet niet hoe ik het nu context moet toevoegen. AddObject ("Products", tempProduct); FOUT: de onderliggende provider is mislukt op Open.
toegevoegd de auteur davethecoder, de bron
nieuwste, EntityFramework.4.1.10715.0 ik gebruik MvcScaffolding, en het trekt de nieuwste EF van nuget
toegevoegd de auteur davethecoder, de bron