ASP.NET MVC EF metoda SaveChanges() duplicitne zapise data do DB   otázka

C#, ASP.NET MVC, Entity Framework, ASP.NET/IIS, Databáze

Zdravim. Mam takyto problem s entity frameworkom:

Mam jednoduchy formular, kde mam iba jeden input typu textarea. Do toho mozno pisat tagy, ktore su separovane s ciarkou. Po kliknuti na submit tieto tagy rozlozim do pola, a chcem ich zapisat do databazy.

        [HttpPost]
        public ActionResult SendTags(FormCollection form)
        {
            char[] delimiter = { ',' };
            List<string> userTags = RemoveDuplicates(form["tags"].Split(delimiter).ToList());
            int image_id = Int32.Parse(form["imgId"]);

            List<Tagger> taggerItems = new List<Tagger>();

            foreach (var tag in userTags)
            {
                Tagger taggerItem = new Tagger();
                taggerItem.ImageId = image_id;
                taggerItem.Tag = tag;
                taggerItem.TagCount = 1;
                taggerItems.Add(taggerItem);
            }
            //var manager = ((IObjectContextAdapter)_db).ObjectContext.ObjectStateManager;
            foreach (var taggerItem in taggerItems)
            {
                taggerRepository.InsertTagger(taggerItem);
            }
            taggerRepository.Save();

            RedirectToAction("GetAllTags", "Tagger");
        }

TaggerRepository spravuje tagy. Metoda Save() zavola SaveChanges() metodu a prida prvky do databazy. Problem je v tom, ze vsetky prvky sa pridaju 2krat. A potom ked uz mam nejake prvky v databaze, tak potom nieze len tie nove sa tam pridaju 2krat ale aj tie ktore tam povodne boli. Som junior co sa tyka EF-u, preto Vas poprosim, keby ste mali hocico co by mi mohlo pomoct, tak mi napiste. Dakujem! P.S. Keby nahodou by niekto potreboval viac toho kodu tak mi piste. :) Vdaka.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jste si jistý, že tu funkci nevoláte dvakrát? Co za kód je v tom repozitáři?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tohle mi dělalo když jsem ukládal pomocí ajaxu a měl jsem tam dvakrát importovanou tu ajaxí (.js) knihovnu... Ale vy to asi nemáte přes ajax..

Podívejte se, jestli se SendTags volá dvakrát...

a taky moc nechápu, proč tam máte ty 2 foreache??

taggerItems je tedy uplně zbytečný... Smažte druhý foreach a jeho vnitřek dejte do prvního..

Zkontrolujte si co je v tom userTags...

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback