private void CreateUpdateOrDeleteTable(Table table, CreateUpdateOrDeleteOperation op)
        {
            switch (op)
            {
            case CreateUpdateOrDeleteOperation.Create:
                table.Location = db.Locations.Find(table.LocationId);
                db.Tables.Add(table);
                break;

            case CreateUpdateOrDeleteOperation.Update:
                // 1. be kell mutatni a modellt az adatbázisnak
                db.Tables.Attach(table);
                // 2. be kell tölteni a hozzátartozó eredeti teremadatokat
                db.Entry(table)                         // kérem az EF adatbázis elérő részét
                .Reference(x => x.Location)             // kérem a csatlakozó táblák közül a Location-t
                .Load();                                // onnan betöltöm az adazokat
                // 3. módosítani kell az új teremadatot
                table.Location = db.Locations.Find(table.LocationId);
                // 4. jelezni kell, hogy változott, így a többi érték (Name, stb.) változást is figyelembe veszi az EF
                db.Entry(table).State = EntityState.Modified;
                break;

            case CreateUpdateOrDeleteOperation.Delete:
                db.Tables.Remove(table);
                break;

            default:
                throw new Exception($"Erre a műveletre nam vagyunk felkészítve: {op}");
                break;
            }
        }
Exemplo n.º 2
0
        private void CreateUpdateOrDeleteMenuItem(MenuItem menuItem, CreateUpdateOrDeleteOperation op)
        {
            switch (op)
            {
            case CreateUpdateOrDeleteOperation.Create:
                var categoryCreate = db.Categories.Find(menuItem.CategoryId);
                //todo: ezt a részt vissza integrálni
                //if (category == null)
                //{ //Ha nincs ilyen kategóriám, akkor nem tudok mit tenni,
                //  //visszaküldöm az adatokat módosításra
                //    LoadAssignableCategories(menuItem);
                //    return View(menuItem);
                //}

                db.MenuItems.Attach(menuItem);
                //mivel ez egy vadonatúj elem, ami még nem volt adatbázisban,
                //ezért nem tudunk property-t tölteni, mert nincs honnan.
                //ezért az Edit-tel ellentétben ez a sor nem kell.
                //db.Entry(menuItem).Reference(x => x.Category).Load();
                menuItem.Category = categoryCreate;
                return;

            case CreateUpdateOrDeleteOperation.Update:
                var categoryUpdate = db.Categories.Find(menuItem.CategoryId);

                //todo: ezt a részt vissza kell integrálni
                //if (category == null)
                //{ //Ha nincs ilyen kategóriám, akkor nem tudok mit tenni,
                //  //visszaküldöm az adatokat módosításra
                //    LoadAssignableCategories(menuItem);
                //    return View(menuItem);
                //}

                //a html form-ról jövő adatokat "bemutatjuk" az adatbázisnak
                db.MenuItems.Attach(menuItem);

                //az adatbázissal kapcsolatos dolgok eléréséhez kell az Entry
                var entry = db.Entry(menuItem);

                //ennek segítségével betöltjük a Category tábla adatait a menuItem.Category property-be
                entry.Reference(x => x.Category).Load();

                //majd felülírjuk azzal, ami bejött a HTML form-on
                menuItem.Category = categoryUpdate;
                entry.State       = EntityState.Modified;

                return;

            case CreateUpdateOrDeleteOperation.Delete:
                db.MenuItems.Remove(menuItem);
                return;

            default:
                throw new Exception($"Erre nem vagyunk felkészülve: {op}");
            }
        }
        private void CreateUpdateOrDeleteMenuItem(MenuItem menuItem, CreateUpdateOrDeleteOperation op)
        {
            switch (op)
            {
            case CreateUpdateOrDeleteOperation.Create:
                var categoryCreate = db.Categories.Find(menuItem.CategoryId);

                //if (category == null)
                //{//Ha nincs ilyen kategoria, akkor nem lehet mit tenni, visszakuldom az adatokat modositasra
                //    LoadAssignableCategories(menuItem);
                //    return View(menuItem);
                //}

                db.MenuItems.Attach(menuItem);

                //Mivel ez egy teljesen uj elem, ami meg nem volt az adatbazisban (ellentetben az Edit-tel),
                //ezert nem tudunk property-t tolteni, mert meg nincs honnan.
                //Ezert ebben az estben az alabbi sor nem kell (es InvalidOperationsException-t is dobna).
                //db.Entry(menuItem).Reference(x => x.Category).Load();

                menuItem.Category = categoryCreate;
                return;

            case CreateUpdateOrDeleteOperation.Update:
                var categoryUpdate = db.Categories.Find(menuItem.CategoryId);

                //if (category == null)
                //{//Ha nincs ilyen kategoria, akkor nem lehet mit tenni, visszakuldom az adatokat modositasra
                //    LoadAssignableCategories(menuItem);
                //    return View(menuItem);
                //}

                //A html formrol jovo adatokat bemutatjuk az adatbazisnak
                db.MenuItems.Attach(menuItem);

                //az adatbazissal kapcsolatos dolgok eleresehez kell az entry
                var entry = db.Entry(menuItem);

                //ennek segitsegevel betoltjuk a Category tabla adatait a menuItem.Category property-be
                entry.Reference(x => x.Category).Load();

                //majd felulirjuk azzal, ami bejott a html formon
                menuItem.Category = categoryUpdate;
                entry.State       = EntityState.Modified; //Csak, ha ez be van allitva, akkor menti a modositasokat az EF
                return;

            case CreateUpdateOrDeleteOperation.Delete:
                db.MenuItems.Remove(menuItem);
                return;

            default:
                throw new Exception($"Erre nem vagyunk felkeszulve: {op}");
            }
        }
Exemplo n.º 4
0
        private void CreateUpdateOrDeleteTable(Table table, CreateUpdateOrDeleteOperation op)
        {
            switch (op)
            {
            case CreateUpdateOrDeleteOperation.Create:
                //a kivalasztott termet is be kell allitani
                table.Location = db.Locations.Find(table.LocationId);     //table.LocationId: A lenyilo kivalasztott erteke
                db.Tables.Add(table);
                break;

            case CreateUpdateOrDeleteOperation.Update:
                //a kivalasztott termet is be kell allitani

                //1. Be kell mutatni a modellt az adatbazisnak
                db.Tables.Attach(table);

                //2. Be kell tolteni a hozzatartozo eredeti teremadatokat
                db.Entry(table)                         //kerem az EF adatbazist elero reszet
                .Reference(x => x.Location)             //kerem a csatlakozo tabalk kozul a Location-t
                .Load();                                //Onnan betoltom az adatokat

                //3. Modositani kell az uj terem adatot a lenyilo mezobol
                table.Location = db.Locations.Find(table.LocationId);

                //4. Jelezni kell, hogy valtozott, igy a tobbi ertek (Name, stb.) valtozast is figyelembe veszi az EF
                db.Entry(table).State = EntityState.Modified;


                break;

            case CreateUpdateOrDeleteOperation.Delete:
                db.Tables.Remove(table);
                break;

            default:
                throw new Exception($"Erre a muveletre nem vagyunk felkeszulve: {op}");
            }
        }